前言
学习python3已经有一段时间了,本着趁自己还记得学过什么的原则,特意把这段时间所学所悟记录下来。就从利用python3编写糗事百科爬虫开始写起,在此感谢静觅博主的python爬虫学习系列教程,指引我学习编写。本文也是根据其python2.x的教程再加上个人对python3学习的理解也写。
一、
就本人目前学习进度而言,编写爬虫代码需要import三个模块。值得一提的是python3与python2有比较大的区别,一部分体现在模块上(这个我以后也会另开一贴作为学习记录,比较两个版本之间出现变化的地方)。现在先就要用到的模块或者方法出现的变化作比较
python3 | python2 |
urllib.request | urllib2 |
二、
直接贴上关键代码
#抓取嗅事百科(一页内容)
import urllib
import urllib.request
import re
page = 1
url = r'https://www.qiushibaike.com/hot/page'+str(page)
user_agent = 'Mozilla/4.0(compatible;MSIE 5.5; Windows NT)'
headers = {'User-Agent':user_agent}
try:
request = urllib.request.Request(url,headers=headers)
response = urllib.request.urlopen(request)
content = response.read().decode('utf-8')
pattern = re.compile(r'h2>(.*?)</h.*?<div.*?<span>(.*?)</.*?>',re.S|re.M)
items = re.findall(pattern,content)
pageLibrary=[]
for item in items:
pageLibrary.append([item[0].strip(),item[1].strip()])
print(item[0].strip(),item[1].strip())
#print(pageLibrary)
except urllib.request.URLError as e:
if hasattr(e,'code'):
print(e.code)
if hasattr(e,'reason'):
print(e.reason)
大体思路:
1.分析目标网页url需要的元素
2.确定是否需要编写headers骗取服务器
3.爬取一整页内容(使用request,response)
4.编写正则表达式(关键)
在此推荐大家两个网站deerchao的正则表达式30分钟入门教程和正则表达式在线测试工具-站长工具, 一个用于学习,一个用于对自己编写的正则进行测试
三、
第一次认真写博客,其实也不知道自己写什么好,就先写到这么多吧,以后想到什么再更新,keep coding !
完整代码上传到了github:https://github.com/callMeBin2217/python3_Spider ,有兴趣的可以下载来看看,或者和我交流也可以。小小小小小小白求轻喷...