Python爬虫一个简单的网络爬虫

Posted 点滴记忆

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python爬虫一个简单的网络爬虫相关的知识,希望对你有一定的参考价值。

网页结构的相似性

爬虫的目的,是从网站中 自动化 的 批量 提取数据。

首先尝试完成以下操作:

从以下链接中提取电影的标题和标题后的年份:

从以下链接中提取每只股票的实时价格(最大那个数字):

链接相似 的网页通常具有相似的外观。

外观相似 的网页通常具有相似的网页结构。

这两个相似性是爬虫能够从一系列网站中自动化提取数据的重要基础。

 代码:

from requests_html import HTMLSession
session = HTMLSession()
links = [https://movie.douban.com/subject/1292052/, https://movie.douban.com/subject/1962665/, https://movie.douban.com/subject/26752088/]

for link in links:
    r = session.get(link)
    title = r.html.find(#content > h1 > span:nth-child(1), first=True)
    year = r.html.find(#content > h1 > span.year, first=True)
    print(title.text, year.text)

也许你用了上面的 股票价格 链接作为爬取对象,你会惊讶的发现程序运行出错了。

事实上,很多网站使用 javascript 代码来生成网页内容,你的爬虫需要正确解析 Javascript 才能获得你所看到的页面。

requests_html 库提供了一个简单的方法来处理应对情况,你只需要在 r = session.get(link) 后,增加一行 r.html.render(),重新运行代码即可。

(初次运行时需要下载一些辅助工具,请耐心等待,如果下载进度条迟迟未能出现,重新运行程序。)

from requests_html import HTMLSession
session = HTMLSession()
links = [http://stock.finance.sina.com.cn/usstock/quotes/aapl.html, http://stock.finance.sina.com.cn/usstock/quotes/bidu.html, http://stock.finance.sina.com.cn/usstock/quotes/msft.html]

for link in links:
    r = session.get(link)
    r.html.render()
    title = r.html.find(#content > h1 > span:nth-child(1), first=True)
    year = r.html.find(#content > h1 > span.year, first=True)
    print(title.text, year.text)

 

以上是关于Python爬虫一个简单的网络爬虫的主要内容,如果未能解决你的问题,请参考以下文章

5行python代码实现简单的网络爬虫

如何用最简单的Python爬虫采集整个网站

网络爬虫简单介绍(python)

scrapy按顺序启动多个爬虫代码片段(python3)

scrapy主动退出爬虫的代码片段(python3)

Python网络爬虫学习手记——爬虫基础