python使用requests库和re库写的京东商品信息爬虫

Posted caesura_k

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python使用requests库和re库写的京东商品信息爬虫相关的知识,希望对你有一定的参考价值。

 1 import requests
 2 import re
 3  
 4 def getHTMLText(url):
 5     try:
 6         r = requests.get(url, timeout=30)
 7         r.raise_for_status()
 8         r.encoding = r.apparent_encoding
 9         return r.text
10     except:
11         return ""
12      
13 def parsePage(ilt, html):
14     try:
15         plt = re.findall(r\'data-done="1"><em>¥</em><i>\\d+\\.\\d+</i></strong>\',html)
16         tlt = re.findall(r\'<em>.+<font class="skcolor_ljg">笔盒</font>.+</em>\',html)
17         for i in range(len(plt)):
18             match=re.search(r\'\\d+\\.\\d+\',plt[i])#这个函数返回的对象是match对象,所以用group属性把价格取出
19             price=match.group(0)                        
20             list_match=re.findall(r\'[\\u4e00-\\u9fa5]\',tlt[i])#这个字符串的中文提取我想了好久都没想到用什么正则表达式一下子提取出来
21             title=\'\'
22             for m in range(len(list_match)):#后来放弃了用正则表达式一下子提取出来的想法,要是有大佬想到了指点一下呗
23                 title=title+list_match[m]
24             ilt.append([price , title])
25     except:
26         print("")
27  
28 def printGoodsList(ilt):
29     tplt = "{:4}\\t{:8}\\t{:16}"
30     print(tplt.format("序号", "价格", "商品名称"))
31     count = 0
32     for g in ilt:
33         count = count + 1
34         print(tplt.format(count, g[0], g[1]))
35          
36 def main():
37     goods = \'笔盒\'
38     depth=3
39     start_url=\'https://search.jd.com/Search?keyword=\'+goods+\'&enc=utf-8\'
40     infoList = []
41     for i in range(1,depth):
42         try:
43             url = start_url + \'&page=\' + str(2*i-1)
44             html = getHTMLText(url)
45             parsePage(infoList, html)
46         except:
47             continue
48     printGoodsList(infoList)
49 main()

 

 

1,下面附上参考源码,来源慕课;原来的爬虫是爬淘宝首页商品,不过现在淘宝首页要登录验证,不能直接爬取;但是具有参考价值;

import requests
import re
def getHTMLText(url):
    try:
        r=requests.get(url,timeout=30)
        r.raise_for_status()
        r.encoding=r.apparent_encoding
        return r.text
    except:
        return" "
    
def parsePage(ilt,html):
    try:
        plt=re.findall(r\'\\"view_price\\"\\:\\"[\\d\\.]*\\" \',html)
        tlt=re.findall(r\'\\"raw_title\\"\\:\\".*?\\"\',html)
        for i in range(len(plt)):
            price=eval(plt[i].split(\':\')[1])
            title=eval(tlt[i].split(\':\')[1])
            ilt.append([price,title])
    except:
        print("")

def printGoodsList(ilt):
    tplt="{:4}\\t{:8}\\t{:16}"
    print(tplt.format("序号","价格","商品名称"))
    count=0
    for g in ilt:
        count=count+1
        print(tplt.format(count,g[0],g[1]))
        
def main():
    goods=\'书包\'
    depth=2#搜索结果设置为两页
    start_url=\'https://s.taobao.com/search?q=\'+goods
    infoList=[]
    for i in range(depth):
        try:
            url=start_url+\'&s=\'+str(44*i)
            html=getHTMLText(url)#把网站文本text爬下来
            parsePage(infoList,html)#然后把文本里需要的信息爬下来
        except:
            continue
    printGoodsList(infoList)#然后把信息整理一下打印出来

main()

 

以上是关于python使用requests库和re库写的京东商品信息爬虫的主要内容,如果未能解决你的问题,请参考以下文章

两种获取链接响应码的方法 (python实现)

用requests库和BeautifulSoup4库爬取新闻列表

python爬虫求一个只用requests库和beautifulsoup库抓取淘宝目录页面内容的框架。。自己抓不出来。绝望。

利用Requests库写爬虫

Python入门 —— 2048实战(字符界面和图形界面)

Python urllib库和requests库