python xpath拿到ul以后再拿到所有a标签_Python 爬虫专项攻略(适合入门级别,望周知)偏知识点、实战...

4de65f65fc01764f6c5ffd43cf033dc3.png

申明:

我不是大神,更不是爬虫大神,题目我也写好申明,仅仅适合入门级别的,对爬虫感兴趣的人员,虽然我分享了很多Python书籍,但我本人真的无法全部带领大家学习,所以,只能有多大力气,干多少事情,希望各位理解。(如果涉及到网站,我本人学习,探究时,对网站产生了不利影响,希望及时通知我,私信我,我会及时修改,重新发布,本文仅仅时学习使用,不针对任何网站,不大规模收集任何网页数据,中国的教育,有很多人需要廉价的免费的高质教育,希望本文可以尽心尽力,码字可能会慢,但希望大家督促!共同成长,进步)

目的:

帮助有Python基础的同学,朋友,学玩基础的人,不知道干嘛,指明一条道路。码字不易,不需要你捧钱场,如果你感觉有用,收藏起来,和我一起学习,也请各位网络大神,尊重原创。

爬虫主要分为两种:web端爬虫、app端爬虫

何为爬虫,简单来说,就是发送一个请求到服务器,服务器返回对应的网页源码,利用网页规则进行解析,提取,拿到对应的数据。就这么简单,对,说起来就这么简单!


  • 以百度为例

1.采集百度网首页

# requests 模块,需要自行安装
import requests

# 百度网址
url = 'https://www.baidu.com/'

# 发送一个get请求
tem = requests.get(url)
# 拿到请求的文本信息
result = tem.text
# 将文本信息写到‘baidu.html’文件里
with open('baidu.html', 'w', encoding='utf8') as f:
    f.write(result)

此时,你右击以记事本打开“baidu.html”文件时,你会发现,有乱码的情况出现,如下图所示:

ee3db4e8a970498a357daa0915fd22d1.png
baidu.html文件中的中文乱码

双击打开baidu.html文件时,会出现如下图所示的页面:

cccd1c13e6e878dec99cb04ab3f07877.png
baidu.html文件在浏览器中的中文乱码

显然,这不是我们想要的,如何解决?(headers

import requests

url = 'https://www.baidu.com/'

# 新添加一个headers字典就好了
# 目的是告诉百度,我是浏览器访问的
headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36'
}
# 将headers放入到requests模块中
# 新添加了一个timeout,防止访问失败,程序卡顿
tem = requests.get(url, headers=headers, timeout=10)
result = tem.text
with open('baidu.html', 'w', encoding='utf8') as f:
    f.write(result)

此时,重复上面的打开步骤,你会发现,字正常了,如下图:

2117e454248418b1a5207a03b523fdcf.png
baidu.html文件中的中文

双击打开baidu.html文件时,会出现如下图所示的页面:

887abe6a4b7ccb02a8cb6bacba9835e3.png
baidu.html文件在浏览器中的中文

简直是完美,值得注意的是,我新添加了两个参数,headers和timeout

headers:模拟浏览器请求,属于爬虫里最基础的反爬手段

timeout:超时参数,防止访问超时,依然在那里访问,设置10,说明,10s到时,还未拿到结果,就放弃,和谈恋爱一样,不能死缠烂打,要适可而止,互相尊重,换个新的,或者隔断时间再访问一下,看看有没有新的变化,也许,她突然爱上你了呢,突然你就拿到数据了呢~


2.提取百度首页部分内容

947b48adc2d7c4b5749c5fa63df5adc1.png
百度首页截图

首先,需要安装lxml库,用于提取目标字段

pip install lxml

65dd9cbd76f7cb76185b0fa151e4b511.png
安装lxml库截图

安装好后,在原有代码导入lxml库

from lxml import etree

利用xpath解析源码,代码如下

import requests
# 导入 lxml 
from lxml import etree

url = 'https://www.baidu.com/'

# 新添加一个headers字典就好了
# 目的是告诉百度,我是浏览器访问的
headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36'
}
# 将headers放入到requests模块中
# 新添加了一个timeout,防止访问失败,程序卡顿
tem = requests.get(url, headers=headers, timeout=10)
result = tem.text
# 将网页内容 result 传入到etree 中
html = etree.HTML(result)
# 利用xpath解析网页内容
left_text = html.xpath('//div[@id="s-top-left"]/a/text()')
# 打印我们需要的目标内容,值得注意的是:这里没有显示“更多”
print(left_text)  # ['新闻', 'hao123', '地图', '视频', '贴吧', '学术']

如何找xpath?

打开百度首页,右击,选择检查,就会出现源代码

187adb7491c7e68a1ed5bdf89b3b71f9.png
百度首页如何找xpath图

按照上图的步骤,学会定位到元素;

xpath部分,可以一个个敲着试,比如先写一个//div

--> 再加入div属性 //div[@id="s-top-left"]

--> 再加入a标签 //div[@id="s-top-left"]/a

--> 最后写全xpath //div[@id="s-top-left"]/a/text()

看看每一步的变化,不要光看不练,动手才会出结果

写好xpath,就可以把上述小代码走一遍啦

恭喜你,已写好人生第一个小爬虫!!!

以上就是百度首页采集的全部内容啦~

欢迎讨论,交流,有时间再加一个把数据保存到本地的代码

虽然我写的很简单,但只是想帮助新手,增加一点信心

嘿嘿,过几天,我们再见~

打工人专属安利:

Python编程入门2021攻略,书籍推荐,视频推荐,每天更新


82e8fc1d491ac77cb8cccf593cce7f65.png
爱我不迷路,我等你哟~
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
当使用Python进行爬虫时,XPath是一种非常有用的工具,可以帮助您从HTML或XML文档中提取所需的数据。以下是一个简单的示例,演示如何使用PythonXPath进行爬虫实战: 首先,您需要安装必要的库。在Python中,您可以使用`lxml`库来解析HTML或XML文档,并使用`requests`库发送HTTP请求。您可以使用以下命令来安装它们: ```python pip install lxml pip install requests ``` 接下来,我们将使用`requests`库发送HTTP请求,并使用`lxml`库解析返回的HTML内容。以下是一个示例代码: ```python import requests from lxml import etree # 发送HTTP请求并获取页面内容 url = 'https://example.com' # 替换为您要爬取的网页地址 response = requests.get(url) content = response.content # 使用lxml解析HTML内容 html = etree.HTML(content) # 使用XPath提取所需的数据 data = html.xpath('//div[@class="example-class"]/text()') # 替换为您要提取数据的XPath表达式 # 打印提取的数据 for d in data: print(d) ``` 在上述示例中,我们首先发送HTTP请求并获取网页的内容。然后,我们使用`etree.HTML()`函数将内容转换为可解析的HTML对象。接下来,我们使用XPath表达式`'//div[@class="example-class"]/text()'`来提取具有`class`属性为`example-class`的`div`元素的文本内容。您可以根据实际情况调整XPath表达式以匹配您要提取的数据。 注意:在实际使用中,您可能还需要处理页面的反爬机制、处理异常情况和使用循环遍历多个页面等。此示例仅为演示基本的Python爬虫XPath使用方法。 希望这可以帮助到您!如有任何问题,请随时提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值