如题,此次为urllib爬取淘宝网零食板块的代码,并将其写入txt文件中:
一、进入淘宝网-查看源代码
二、通过源码得出正则表达式
- title_pat = '"raw_title":"(.*?)",'
- price_pat = '"view_price":"(.*?)",'
- loc_pat = '"item_loc":"(.*?)",'
- sale_pat = '"view_sales":"(.*?)人付款",'
- comment_pat = '"comment_count":"(.*?)",'
三、书写代码进行爬取
扫描二维码关注公众号,回复:
878605 查看本文章
- import re
- import urllib.request
- import urllib.error
- import pandas as pd
- from pandas import DataFrame,read_csv
- #设置正则表达式
- title_pat = '"raw_title":"(.*?)",'
- price_pat = '"view_price":"(.*?)",'
- loc_pat = '"item_loc":"(.*?)",'
- sale_pat = '"view_sales":"(.*?)人付款",'
- comment_pat = '"comment_count":"(.*?)",'
- #设置要进行爬取的网址
- fh=open('./taobao.txt','w')
- #设置搜索关键词
- key = '零食'
- key = urllib.request.quote(key)
- for i in range(1,101):
- try:
- print('正在爬取第'+str(i)+"页")
- url="http://s.taobao.com/search?q="+key+"&imgfile=&js=1&stats_click=search_radio_all%3A1&initiative_id=staobaoz_20180514&ie=utf8&bcoffset=0&ntoffset=6&p4ppushleft=1%2C48&s="+str(i-1)*44
- #设置报头,封装请求并爬取
- headers=("user-agent",'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.170 Safari/537.36')
- opener=urllib.request.build_opener()
- opener.addheaders=[headers]
- urllib.request.install_opener(opener)
- req=urllib.request.Request(url)
- data=urllib.request.urlopen(req).read().decode('utf-8','ignore')
- #提取title、price、location、sale、comment
- title=re.compile(title_pat).findall(data)
- price=re.compile(price_pat).findall(data)
- loc=re.compile(loc_pat).findall(data)
- sale=re.compile(sale_pat).findall(data)
- comment=re.compile(comment_pat).findall(data)
- #写入文件
- mydata=list(zip(title,price,loc,sale,comment))
- mydataf=pd.DataFrame(data=mydata)
- fh.write(str(mydataf))
- except urllib.error.URLError as e: #抓取异常并输出
- print('第'+str(i)+'页爬取失败')
- if hasattr(e,'reason'):
- print(e.reason)
- if hasattr(e,'code'):
- print(e.code)
- print('第'+str(i)+'页爬取成功')
- fh.close()
四、总结
此次urllib实战让我对python的爬虫有了更加深刻的了解。写代码的过程中多次受阻,在此记下:
1、写代码需要有一个清晰的逻辑,清楚自己每一步的目的
2、设置正则表达式、url时何时应该增加引号,何时不能添加,写for循环等功能后需要添加“:”,需要注意缩进,这些都需要经过实践才能清楚自己的不足
3、写入文件时多次出现错误,主要还是对python的各种功能还不够了解,因此,还需要多加练习
不管如何,所有困难一一克服,尽管还有许多细节没有优化好,但这终究是一件令人感到愉悦的事啊~~
——戊戌年丁巳月丁未日记