利用不同工具实现网络爬虫

XPath

XPathXML Path)是一种查询语言,它能在XMLHTML的树状结构中寻找结点。形象一点来说,XPath就是一种根据“地址”来“找人”的语言。(使用C语言开发)

 为什么要用XPath

        用正则表达式来提取信息,针对给定较短的文本比较容易且适宜,但是一旦内容多起来,正则的效率会大大降低,不仅需要构造正则表达式,还需要分析内容结构,寻找的内容越复杂,构造正则表达式所需要花费的时间也就越多。

        而XPath却不一样,我们主要从网页爬取数据,而XPath针对的就是HTML,所以用XPathHTML源代码中提取信息可以大大提高效率。

安装库

xlml库 

pip install lxml

parsel 库

pip install parsel

对比 

  1. lxml:它是一个功能强大的用于处理XML和HTML的库,在Python中使用广泛。它提供了一个快速而易于使用的API,用于处理XML和HTML数据。当使用etree.HTML(html)创建的是一个HTML树,可以使用XPath或CSS选择器从HTML树中提取数据。

  2. parsel:它是一个库,提供了一个简单的API,使用XPath或CSS选择器从HTML和XML中提取数据。当使用parsel.Selector(html)时,即创建了一个Selector对象,可以直接从HTML内容中使用XPath或CSS选择器提取数据。

总结

lxmlparsel都可以用于网页抓取,但它们有不同的API和功能,用于从HTML中提取数据。lxml是一个更通用的XML/HTML处理库,而parsel专门用于使用选择器提取数据。

语法

细节较多,可以参考菜鸟教程的XPath教程

注意“//”与“/”的区别

“/”是从<html>根标签查找,开头一定是html标签,即 /html/body/...

“//”是从全文查找,开头不一定是html标签

XPath 教程 | 菜鸟教程 (runoob.com)

案例

from lxml import etree
import requests
html = requests.get("http://exercise.kingname.info/exercise_bs_1.html").content.decode()

selector = etree.HTML(html)

content = seletor.xpath('//div[@class="useful u"]/ul/li/text()')

for item in content:
    print(item)

import parsel 

selector = parsel.Selector(html)

结果


BeautifulSoup4

简介

Beautiful Soup4BS4)是Python的一个第三方库,用来从HTMLXML中提取数据。

Beautiful Soup4在某些方面比XPath易懂,但是不如XPath简洁,而且由于它是使用Python开发的,因此速度比XPath慢。

安装

pip install beautifulsoup4

语法 

使用Beautiful Soup4提取HTML内容,一般要经过以下两步。

处理源代码生成BeautifulSoup对象。

使用find_all()或者find()来查找内容。

具体语法:​​​​​​Beautiful Soup 教程 (w3schools.cn)  或Beautiful Soup 4.2.0 文档 — Beautiful Soup 4.2.0 documentation (crummy.com)

案例

from bs4 import BeautifulSoup
import requests
html = requests.get("http://exercise.kingname.info/exercise_bs_1.html").content.decode()
soup = BeautifulSoup(html, 'lxml')
info = soup.find(class_='test')
print('使用find方法,返回的对象类型为'.format(type(info)) )
print(info.string)

结果 

网页源代码

<html>
<head>
<title>测试</title>
</head>
<body>
<div class="useful">
<ul>
<li class="info">我需要的信息1</li>
<li class="test">我需要的信息2</li>
<li class="iamstrange">我需要的信息3</li>
</ul>
</div>
<div class="useless">
<ul>
<li class="info">垃圾1</li>
<li class="info">垃圾2</li>
</ul>
</div>
</body>
</html>

通过以上工具对内容进行过滤后,即可将想要的数据保存在文件或数据库中,进行可视化或其他操作

保存到文件可以参考python读写文件操作-CSDN博客

  • 20
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Python是一种功能强大的编程语言,可以用于开发各种应用程序,包括网络爬虫网络爬虫是一种自动化程序,用于从互联网上收集信息。而Python可以帮助我们编写网络爬虫程序,从而实现爬取PDF文件的功能。 要爬取PDF文件,我们可以使用Python的第三方库,如requests和beautifulsoup。首先,我们可以使用requests库发送HTTP请求,获取网页的HTML内容。然后,我们可以使用beautifulsoup库解析HTML内容,找到包含PDF链接的元素。 一旦我们获得了PDF链接,我们可以使用requests库再次发送HTTP请求,下载PDF文件。我们可以通过设置请求头来模拟浏览器行为,以便成功下载PDF文件。下载后,我们可以使用Python内置的文件操作功能,将PDF保存到本地。 此外,我们还可以使用第三方库,如PyPDF2和PDFMiner,来处理已下载的PDF文件。这些库可以帮助我们提取文本、读取元数据、合并或拆分PDF文件等操作。 实现网络爬虫PDF的过程需要一定的编程知识和技巧,但使用Python编写网络爬虫程序是相对简单的。通过学习和使用适当的工具和库,我们可以更轻松地实现爬取PDF文件的功能。网络上也有很多教程和文档,提供了详细的步骤和示例代码,可以帮助我们更好地理解和掌握Python网络爬虫PDF的技术。 ### 回答2: Python网络爬虫可以用来爬取PDF文件。爬取PDF文件的过程主要分为两步:首先,利用网络爬虫获取到包含PDF文件链接的网页;然后,再通过网络请求下载PDF文件并保存到本地。 首先,我们需要使用Python的爬虫库(如Requests、BeautifulSoup等)发送HTTP请求获取到包含PDF链接的网页内容。可以使用GET方法请求目标网页,并使用网页解析库来提取出PDF文件的链接。 接下来,我们需要通过网络请求下载PDF文件。可以使用Python的urllib库来进行文件下载。通过传入PDF链接到urllib的urlopen方法中,即可获取PDF文件的内容。然后,将内容保存到本地文件中。 当然,对于一些特殊情况,比如需要登录才能获取到PDF链接的网站,我们需要在爬取之前先进行登录认证。可以使用Python的Selenium库来模拟登录操作,通过自动填写表单、提交表单等方式实现登录认证,之后再进行爬取操作。 此外,对于一些需要翻页的情况,我们可以通过分析URL的规律来构造不同页码的链接,然后循环爬取每一页的PDF链接。通过遍历所有页面,即可获取到所有的PDF文件。 总结起来,利用Python的网络爬虫技术可以方便地爬取网页中的PDF文件。主要步骤包括获取包含PDF链接的网页、提取链接、下载PDF文件并保存到本地。同时,根据具体情况可能需要进行登录认证或翻页操作。这样,就可以有效地实现对PDF文件的爬取。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值