python爬虫练习–爬取豆瓣出版社信息-urllib.error.HTTPError: HTTP Error 418
从小的demo开始练手爬虫,爬取豆瓣出版社信息.
网址为:https://read.douban.com/provider/all
直接使用urllib库来爬取代码如下:
#简单爬虫的编写
import urllib.request
import re
#提取豆瓣网站出版社名称(已被反爬,需要更新使用requests库并添加请求头)
data=urllib.request.urlopen("https://read.douban.com/provider/all").read().decode("utf-8")
pat='''<div class="name">(.*?)</div>'''
rst=re.compile(pat).findall(data)
发现有报错爬取失败.报错为:
urllib.error.HTTPError: HTTP Error 418:
了解后发现418错误多半是网站有反爬虫机制,需要我们额外去模仿浏览器客户端来发送请求,
于是改用requests库,并添加了请求头header
#爬取豆瓣出版社信息网站的出版社信息名称
import requests
import re
headers={'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.88 Safari/537.36'}
r = requests.get("https://read.douban.com/provider/all",headers=headers)
html = r.text
pat='<div class="name">(.*?)</div>'
rst=re.compile(pat).findall(html)
fh=open("/home/l03099/pathon.txt","w")
for i in range(0,len(rst)):
fh.write(rst[i]+"\n")
fh.close()
结果如下: