Python3爬虫入门实战(一)(修改)
2016-09-01 本文已影响476人
大邓和他的python
最近发现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本书名
关注公众号 大邓带你玩转python

