网络爬虫代码_Python爬虫实践(8)--抓取新浪科技资讯列表

本期为python爬虫实践的第八节,传送门:

Python爬虫实践(1)--大数据时代的数据挑战

Python爬虫实践(2)--非结构化数据与爬虫

Python爬虫实践(3)--了解网络爬虫背后的秘密

Python爬虫实践(4)--编写第一个网络爬虫程序

Python爬虫实践(5)--使用BeautifulSoup解析网页元素

Python爬虫实践(6)--BeautifulSoup的基础操作

Python爬虫实践(7)--抓取菜鸟教程python学习路线

本期教程我们以新浪科技资讯页面为例,看一看新浪资讯页面的抓取该如何实现。

e10a6a60170b9c74aa92b6fe83b0231e.png

新浪科技资讯

打开开发者工具,通过对页面源代码的分析,可以知道:我们想要获取的资讯列表被包含在一个使用了cardlist-a__list样式的div中,我们可以根据这一点,将内容提取出来。代码如下:

import requestsfrom bs4 import BeautifulSoupres = requests.get('https://tech.sina.com.cn/')res.encoding = 'utf-8'soup = BeautifulSoup(res.text, 'html.parser')print(soup.select('.cardlist-a__list'))

但是代码执行的结果,并不是我们想要的,结果如下图。执行结果只是提取出了一个div,但div里面包含的内容,却一点都没有。由此我们猜测这里的内容是在页面加载的后期通过js代码加载而来的。

36419ee3a0ffae8291fe8d62e46ce2f0.png

执行结果

经过一番查找,最后我们在一个资源中找到了动态的信息,如下图。

c0535b9429ef8cbe8a9f5564d6e794f5.png

动态加载信息

8cfb7166ce2c4da5ece0f3e0fe3e1c10.png

动态加载信息

由于这个资源的URL特别长,里面的参数比较多,我们试着对这个URL进行分析。我们找来了新浪体育资讯页面中,同样用来加载动态信息的这个URL。经过对比和反复的测试,我们发现,mod这个参数控制着所要加载的资讯类别,而这个参数的值和整个页面的URL有关。故我们编写了如下代码,对信息进行提取。

5faee618200d23cea4579ba88a562732.png

URL分析

import requestsfrom bs4 import BeautifulSoupimport reimport jsonres = requests.get( 'https://cre.mix.sina.com.cn/api/v3/get?callback=jQuery111204369690274915774_1554164761226&cre=tianyi&mod=pctech&merge=3&statics=1&length=15')res.encoding = 'utf-8'data=re.search('{"data".*', res.text)jsondata=json.loads(data.group().rstrip(');'))for news in jsondata['data']: print('标题:'+news['title']+'---作者:'+news['author'])

在上面的代码中,我们使用了json和正则表达式。由于这不是本教程的重点,我们也就不再做详细讲解,如果有读者朋友对这两块的知识有疑问,可以通过网络搜索资料进行学习。

b4052623246c87b815f0694ff8a33d2d.png

python

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值