python爬虫提取规定

您所在的位置:网站首页 python提取指定位置字符 python爬虫提取规定

python爬虫提取规定

2023-03-25 03:53| 来源: 网络整理| 查看: 265

Python中有关网页操作的标准库有很多

这次使用三个流行的bs4库、requests_html库和lxml库的方法,在你需要在自己的程序中插入指定网页的指定容器的内容时,可以插入下面的内容,因为你需要的信息可能是一直在变动的。缺点是如果网站运营者改动了网页的分支结构,这段代码就会出错,但是一般来说,大公司的网站结构一般不会随意改变,毕竟改进一次web结构,意味着底层码农需要重新学一次搬砖技巧。

比如说我们爬取https://python123.io/index中专栏后面的这行小字,这很显然是个静态的文字,爬取它不容易出错。

1.BeautifulSoup().select()方法

在这之前,我们要通过强大的CSS选择器获取这个特定元素,以Chrome为例:

from bs4 import BeautifulSoup

import requests

url = 'https://python123.io/index'

response = requests.get(url)

response.encoding=response.apparent_encoding

#因为网站使用的不是通用的utf-8格式,而是gzip,所以要让它判断解码格式

html = BeautifulSoup(response.text,'lxml')

#获取到的网页信息需要进行解析,使用lxml解析器,其实默认的解析器就是lxml,但是这里会出现警告提示,方便你对其他平台移植

content=html.select('#links > div:nth-child(1) > div.main > div > div.landing.is-clipped > div:nth-child(2) > div:nth-child(1) > h4:nth-child(6) > span')

#将复制好的选择器信息放进select方法中,将获取到的内容作为tag形式放入一个列表中

print(content[0].get_text())

#打印这个列表中第一个内容,就是我们要获得的信息

输出结果为:向别人清楚讲述,是更有效率的学习方式!开设专栏,分享你的所学所得。

2.HTMLSession.get().html.find()方法

from requests_html import HTMLSession

session=HTMLSession()

url=session.get('https://python123.io/index')

content=url.html.find('#links > div:nth-child(1) > div.main > div > div.landing.is-clipped > '

'div:nth-child(2) > div:nth-child(1) > h4:nth-child(6) > span',first=True)

#将选择器信息作为find方法中第一个参数键入,加上first参数,值为Ture

print(content.text)

#输出requests_html的元素的文本属性,得到目标文本(content变量类型为requests_html.Element)

输出结果为:向别人清楚讲述,是更有效率的学习方式!开设专栏,分享你的所学所得。

3.etree.HTML().xpath()方法

注意看对应的这段网页源代码,它是在span标签中,并且这个标签的class类名叫is-text-small is-text-grey,我们就用这个方法来直接匹配这个标签就可以得到信息了。

这个方法前半部分和第一个方法一样,嘻嘻,所以内容就轻易获取到了。

from lxml import etree

import requests

url = 'https://python123.io/index'

response = requests.get(url)

response.encoding=response.apparent_encoding

label=etree.HTML(response.text)

#提取这个页面中所有的标签信息

content=label.xpath('//span[@class="is-text-small is-text-grey"]/text()')

#提取span标签中class名为"is-text-small is-text-grey"的内容信息,并且存入一个列表中

print(content[0])

#打印获得的文本信息

输出结果为:向别人清楚讲述,是更有效率的学习方式!开设专栏,分享你的所学所得。

总结

至此,三种方法都爬取到了指定的文本信息,但是这样的爬虫既不能保证网站结构不改变,又不能保证不会被作为恶意爬虫被反爬,也不能保证被作为频繁的机器操作被屏蔽IP。

所以,在后续的博客中,我们尝试加入更健壮的爬虫方法,并且在访问时加入浏览器标头,以及使用动态IP去访问网址。

但是,无论如何,你的爬虫必须都遵从三点:程序必须具有类人一样操作,不能利用计算机强大的计算能力,恶意频繁访问网站,给网站造成巨大的压力。所以,在编写爬虫时对其访问速度加以限制,以免对网站服务器带来巨大的资源开销。

法律准则:

(1)2017年6月1日起施行的《中华人民共和国网络安全法》规定:任何个人和组织不得窃取或者以其他非法方式获取个人信息,不得非法出售或者非法向他人提供个人信息。

(2)爬取数据过程中不应侵犯他人的知识产权。

遵循Robots协议:

查看网站的robots文件:网站主域名+"/robots.txt"注:网络爬虫的行为准则​www.jianshu.com



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3