目录
推荐网站(可以根据网页自动转化为表头):https://curlconverter.com/
5. 用requests的get 向网站发起请求,并获取响应对象
6.打印response的状态码,并运行,如果是200就是正确的
7.设置响应对象的编码格式 ,把response中的apparent_enconding赋值给response的enconding
8.使用etree解析网页,在获取我们所需的xpath路径(可直接复制xpath路径,如下),在xpath后加text()是获取文本内容,加@href是href中的属性内容
前言
用Python爬取网页上的信息
首先我们要明确自己要获取的内容是什么?在这里我们需要获取天气网里面的预报里面的信息,第一打开我们的F12开发者模式,找到我们需要的信息在哪个位置,然后我们需要爬取我们的网址和文本内容预报
1.导包
代码如下(示例):
import requests
from lxml import etree
注意:为了更好地组织Python代码,开发人员通常会根据不同业务将模块进行归类划分,并将功能相近的模块放到同一目录下。 如果想要导入该目录下的模块,就需要先导入包。 Python中的包是一个包含__init__.py文件的目录,该目录下还包含一些模块以及子包。
2.写入表头
代码如下(示例):
推荐网站(可以根据网页自动转化为表头):https://curlconverter.com/
使用教程:打开F12开发者模式,找到Network中随便一个js文件,右击,复制Copy中的Copy as cURL
打开我们的网站
3. 使用代理 IP 隐藏我们发送请求的真实 IP 地址
代码如下(示例):
prosies = {'http':'http://202.103.203.97:9091'}
注意:在站大爷里面获取的免费代理IP要和该IP的端口号相对应,不然要报以下错误(该错要不是你端口号错了,要不是你被网管发现了,被发现了只有换一个IP地址)
4. 获取该天气网页的地址
weather_url = 'http://www.weather.com.cn/'
5. 用requests的get 向网站发起请求,并获取响应对象
response = requests.get(weather_url, headers=headers,proxies=prosies)
6.打印response的状态码,并运行,如果是200就是正确的
print(response.status_code)
7.设置响应对象的编码格式 ,把response中的apparent_enconding赋值给response的enconding
response.encoding=response.apparent_encoding
属性 | 说明 |
enconding | 从HTTP header中猜测的响应内容编码方式 |
apparent_encoding | 从内容中分析出的响应内容编码方式 |
encoding是从http中的header中的charset字段中提取的编码方式,若header中没有charset字段则默认为ISO-8859-1编码模式,则无法解析中文
apparent_encoding会从网页的内容中分析网页编码的方式,所以apparent_encoding比encoding更加准确。当网页出现乱码时可以把apparent_encoding的编码格式赋值给encoding。
8.使用etree解析网页,在获取我们所需的xpath路径(可直接复制xpath路径,如下),在xpath后加text()是获取文本内容,加@href是href中的属性内容
selector = etree.HTML(response.text)
procast_name = selector.xpath('/html/body/div[1]/div[1]/div[1]/div[2]/div/ul[1]/li[1]/a/text()')[0]
print(procast_name)
procast_herf = selector.xpath('/html/body/div[1]/div[1]/div[1]/div[2]/div/ul[1]/li[1]/a/@href')
print(procast_herf)
在F12开发者模式中找到Elements中预报的定位,在该定位中右击,Copy中到Copy XPath
9.运行结果如下
总结
提示:这里对文章进行总结:
例如:以上就是今天要讲的内容,本文仅仅简单介绍了如何用python爬取网页上的数据