""" 百度网页爬取练习,获取标题和标题地址 1、导入库,etree 和 requests 2、获取百度url地址 3、模拟浏览器输入 4、字段拼接 5、拼接结果解析html页面 6、将html字符串解析 7、利用xpath语法获取相应的字段信息并转化文本信息 8、数据以字典形式存储 9、for循环依次写入数据并进行保存 10、输出 """ import requests from lxml import etree url = "https://www.baidu.com" headers = { "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36" } response = requests.get(url, headers=headers) condent = response.content.decode('utf8') html = etree.HTML(condent) contents = html.xpath('//div[@id= "s-top-left"]/a/text()') contentes = html.xpath('//div[@id= "s-top-left"]/a') print(type(contentes)) urls = html.xpath('//div[@id= "s-top-left"]/a/@href') flash = html.xpath('//ul[@class="s-hotsearch-content"]/li/a/text') print(flash) egs = [] for condent, url in zip(contents, urls): eg = {} eg = { "contents": condent, "urls": url } egs.append(eg) print(egs)
时间: 2024-04-18 17:30:23 浏览: 118
这是一个简单的百度网页爬取练习,主要目的是获取标题和标题地址。以下是代码的解析:
1. 首先导入了需要的库 `etree` 和 `requests`。
2. 获取百度的URL地址。
3. 使用模拟浏览器的方式发送请求,设置了请求头部信息。
4. 对字段进行拼接。
5. 解析HTML页面,将HTML字符串解析为可处理的对象。
6. 使用XPath语法获取相应的字段信息,并将其转化为文本信息。
7. 将获取到的标题和标题地址存储在字典中。
8. 使用循环遍历所有的标题和标题地址,并将其添加到列表中。
9. 将数据进行保存。
10. 最后输出结果。
请注意,这只是一个简单的示例,实际应用中可能还需要进行更多的处理和异常处理。
相关问题
requests爬取的网页内容清理成etree.fromstring()函数的期望格式
当你使用`requests`库从URL抓取HTML内容后,通常有两种方式将其转换为`lxml`库可以解析的文档树:
1. 使用`lxml.html.fromstring()`[^1]:
```python
resp = requests.get(url, headers=headers)
text = resp.content.decode('utf8')
doc = lxml.html.fromstring(text)
```
这种方法直接从原始字符串`text`创建了一个HTML文档树,你可以通过这个树结构来遍历和提取信息。
2. 先保存为`response.text`(文本格式)再用`etree.HTML()`:
```python
from lxml import etree
resp = requests.get(url, headers=headers)
text = resp.text
html = etree.HTML(text)
```
这里先将响应体的文本存储在`text`变量中,然后再创建HTML文档树。这两种方法的效果是一样的,只是处理步骤略有不同。
`fromstring()`方法更简洁,因为它一步到位地处理了编码问题并构建了树。而如果先保存为文本再转换,可能是因为你想要保持原始文本格式便于查看或后续操作。
要清理的内容通常是去除HTML标签的干扰,以便于提取纯文本内容或特定的元素。`lxml`提供了强大的XPath和CSS选择器支持,可以方便地定位和提取所需的数据。
etree爬取天气信息
你需要用到以下的库和工具:
1. requests:用于发送HTTP请求
2. lxml:用于解析HTML
3. XPath:用于在HTML文档中提取数据
4. Python3:用于编写脚本
下面是示例代码:
```python
import requests
from lxml import etree
url = "http://www.weather.com.cn/weather/101010100.shtml"
response = requests.get(url)
response.encoding = 'utf-8'
html = response.text
selector = etree.HTML(html)
# 获取城市名
city = selector.xpath('//div[@class="crumbs fl"]/a/text()')[2]
# 获取今天的天气情况
today = selector.xpath('//div[@class="t"]/ul/li')[0]
date = today.xpath('./h1/text()')[0]
weather = today.xpath('./p[@class="wea"]/text()')[0]
temp = today.xpath('./p[@class="tem"]/span/text()')[0]
print(f"{city} {date} {weather} {temp}")
```
上述代码通过requests库发送HTTP请求,获取指定城市的天气页面,并使用lxml库解析HTML文档。使用XPath提取城市名、日期、天气情况、温度等信息,最后输出到控制台。
你可以根据自己的需求,将上述代码进行修改和扩展,以满足你的具体要求。
阅读全文