Python爬虫:如何爬取分页数据?

上一篇文章《Python爬虫:爬取人人都是产品经理的数据》中说了爬取单页数据的方法,这篇文章详细解释如何爬取多页数据。

爬取对象:

有融网理财项目列表页【履约中】状态下的前10页数据,地址:https://www.yrw.com/products/list-all-all-performance-1-createTimeDesc-1.html

编程思路:

1. 寻找分页地址的变动规律 2. 解析网页,获取内容,放入自定义函数中 3. 调用函数,输出分页内容

详细解说:

1. 首先插入用到的库:BeautifulSoup、requests

1 from bs4 import BeautifulSoup
2 import requests

2. 观察地址的变化规律,可以看到,每切换一页时,后面“createTimeDesc-1.html”中的数字1会随着页面的变动而变动,此时我们将地址存放进列表中,后面用format()和for循环来实现多个地址的存储。

1 urls = ['https://www.yrw.com/products/list-direct-all-performance-1-createTimeDesc-{}.html'.format(str(i)) for i in range(1,11)]
2 print(urls)

此时可以先print下,看地址是否正确,这里range(1,11)是前10个页面的地址。

3. 接下来定义解析函数,参数data的初始值为空。函数内用到的内容和上一篇文章中讲到的相同。先请求urls,然后用BeautifulSoup解析,筛选我们想要的项目标题titles的位置,实现输出。

1 def get_titles(urls,data = None):
2     web_data = requests.get(urls)
3     soup = BeautifulSoup(web_data.text, 'lxml')
4     titles = soup.select(' h3 > a > em > strong')
5     for title in titles:
6         data = {
7             'title': title.get_text()
8         }
9         print(data)

4. 最后,我们来调用函数。

1 for titles in urls:
2     get_titles(titles)

完整代码:

 1 from bs4 import BeautifulSoup
 2 import requests
 3 
 4 urls = ['https://www.yrw.com/products/list-direct-all-performance-1-createTimeDesc-{}.html'.format(str(i)) for i in range(1,11)]
 5 # print(urls)
 6 
 7 def get_titles(urls,data = None):
 8     web_data = requests.get(urls)
 9     soup = BeautifulSoup(web_data.text, 'lxml')
10     titles = soup.select(' h3 > a > em > strong')
11     for title in titles:
12         data = {
13             'title': title.get_text()
14         }
15         print(data)
16 
17 for titles in urls:
18     get_titles(titles)

运行结果(只展示部分):

{'title': '资产融ZT321期'}

{'title': '供应链ZT2923期'}

{'title': '租车融ZT335期'}

{'title': '供应链ZT2922期'}

{'title': '供应链ZT2919期'}

操作环境:Python版本,3.6;PyCharm版本,2016.2;电脑:Mac

-----   End   -----

作者:杜王丹,微信公众号:杜王丹,互联网产品经理。

Python爬虫:如何爬取分页数据?_第1张图片

转载于:https://www.cnblogs.com/duwangdan/p/6898391.html

你可能感兴趣的:(Python爬虫:如何爬取分页数据?)