Python3爬虫入门实战(一)(修改)

浏览: 1127

最近发现requests比python3中的urllib.request(python2中的urllib,urllib2好用多了)
重复昨天的工作,以后课程尽量用requests库

# -*- coding=utf-8 -*-
import requests
from bs4 import BeautifulSoup
import time

num = 1 # 用来计数,计算爬取的书一共有多少本
start_time = time.time() # 计算爬虫爬取过程时间

# 第一页网页网址https://read.douban.com/columns/category/all?sort=hot&start=0
# 第二页网页网址https://read.douban.com/columns/category/all?sort=hot&start=10
# 第三页网页网址https://read.douban.com/columns/category/all?sort=hot&start=20
# ......发现规律了吗
url = 'https://read.douban.com/columns/category/all?sort=hot&start='

for i in range(0, 1650, 10): # 这里的 range(初始,结束,间隔)
# requests库用来向该网服务器发送请求,请求打开该网址链接
html = requests.get('https://read.douban.com/columns/category/all?sort=hot&start=%d' % i).content
# BeautifulSoup库解析获得的网页,第二个参数一定记住要写上‘lxml’,记住就行
bsObj = BeautifulSoup(html, 'lxml')
print('==============' + '第%d页' % (i / 10 + 1) + '==============')
# 分析网页发现,每页有10本书,而<h4>标签正好只有10个。
h4_node_list = bsObj.find_all('h4') # 这里返回的是h4标签的list列表

for h4_node in h4_node_list:
# 因为是列表,要用list[0]取出来<a>标签,在用<a>的string将文本取出来
title = h4_node.contents[0].string
title = '<<' + title + '>>'
print('第%d本书' % num, title)
num = num + 1
# 设置抓数据停顿时间为1秒,防止过于频繁访问该网站,被封
time.sleep(1)


end_time = time.time()
duration_time = end_time - start_time
print('运行时间共:%.2f' %duration_time + '秒')
print('共抓到%d本书名' % num)

运行结果:
......
第1647本书 <<你常常在梦中欢快地笑出声来>>
第1648本书 <<诡故事不是鬼故事>>
第1649本书 <<海底喋血——核潜艇>>
第1650本书 <<猪八戒与嫦娥>>
运行时间共:385.77秒
共抓到1651本书名

推荐 0
本文由 邓旭东HIT 创作,采用 知识共享署名-相同方式共享 3.0 中国大陆许可协议 进行许可。
转载、引用前需联系作者,并署名作者且注明文章出处。
本站文章版权归原作者及原出处所有 。内容为作者个人观点, 并不代表本站赞同其观点和对其真实性负责。本站是一个个人学习交流的平台,并不用于任何商业目的,如果有任何问题,请及时联系我们,我们将根据著作权人的要求,立即更正或者删除有关内容。本站拥有对此声明的最终解释权。

0 个评论

要回复文章请先登录注册