忘记密码

成功验证手机号即可找回密码

请输入密码
请确认密码
用户登录
请输入密码
忘记密码
注册免费试用
注册后联系客服获取免费资格
请输入密码
复制成功
请粘贴在新的浏览器或标签页内打开
确定
账户余额不足10元

为了不影响您的正常使用,请及时充值!

我知道了

恭喜您注册成功!
已成功领取账户余额

25 1
立即领取

手机号绑定成功!
已成功领取账户余额

25 1
立即领取
首页> 最新资讯> 爬虫如何爬取豆瓣读书的新书信息

爬虫如何爬取豆瓣读书的新书信息

最新资讯 发布日期 2019-04-28         

  今天芝麻HTTP就为大家分享一下,爬虫是如何爬取豆瓣读书的新书信息。这里我们主要抓取的信息有:地址、书名、封面、作者、出版时间和出版社。在抓取之前,我们可以先打开目标页面,研究分析一下页面,查找所需信息所在的位置。

  代码如下:

import requests

import urllib

import sys

import re

import json

from requests.exceptions import RequestException  #异常代码模块

def get_one_page(url):

headers = {'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8',

'Accept-Encoding':'gzip, deflate, br',

'Accept-Language':'zh-CN,zh;q=0.9',

'Cache-Control':'max-age=0',

'Connection':'keep-alive',

'Host':'book.douban.com',

'Referer':'https://www.baidu.com/s?ie=utf8&oe=utf8&wd=%E8%B1%86%E7%93%A3&tn=98012088_5_dg&ch=1',

'Upgrade-Insecure-Requests':'1',

'User-Agent':'agent信息'}

try:

response = requests.get(url,headers=headers) #打开网址

if response.status_code == 200: #判断状态码

return response.text      #状态码成功返回网页源代码

return None

except RequestException:

return None

def pare_one_page(html):

pattern =re.compile('<li.*?class="cover">.*?<a href="(.*?)" title="(.*?)">'

+'.*?src="(.*?)".*?class="author">(.*?)</div>'

+'.*?class="year">(.*?)</span>.*?class="publisher">(.*?)</span>.*?</li>', re.S)

items = re.findall(pattern,html)

#print(items)

for item in items:

yield {

'href': item[0],

'title': item[1],

'img': item[2],

'author': item[3].strip(), #strip()去除开头或结尾的空格及特殊符号

'time': item[4].strip(),

'Press': item[5].strip()

}

def write_to_file(content):

with open('result.txt','a',encoding='utf-8') as f: #创建文本

f.write(json.dumps(content,ensure_ascii=False)+'\n') #json.dumps将字典转换成字符串

f.close()

def main():

url = 'https://book.douban.com/'

non_bmp_map = dict.fromkeys(range(0x10000, sys.maxunicode + 1), 0xfffd)

page = urllib.request.urlopen(url)  #模块urllib发送HTTP请求,打开网站

html = page.read().decode().translate(non_bmp_map) #返回得到的网站,并解码网站中奇怪的符号

#print(html)

for item in pare_one_page(html):  #正则表达式调用

print(item)

write_to_file(item)  #调用写入文本

if __name__ == '__main__':

main()

  通过上述代码,我们就可以获取到豆瓣读书的新书相关内容了。芝麻HTTP为您提供安全稳定、高效便捷的爬虫代理IP服务,更多问题请点击官网咨询客服。

爬虫 新书 数据
客户经理
835658804 18115265829
在线咨询

售后客服

在线售后,实时响应

渠道/企业/大客户合作

大汉:153-0544-5551
芝麻HTTP公众号 微信客服
免费套餐
客户定制
专属客户经理
2890289832
15963368937

微信二维码

大客户
专属客户经理
1214413489
17696587966

微信二维码

公众号

关注公众号

意见反馈
置顶