【面试宝典】23道数据爬虫高频题库整理(附答案背诵版)

Python匹配HTML tag的时候,<.*>和<.*?>有什么区别?

在Python中,当你使用正则表达式来匹配HTML标签时,<.*><.*?>之间的主要区别在于它们的贪婪性(greediness)和懒惰性(laziness)。

  1. <.*>:
  • 这是一个贪婪模式(greedy pattern)的正则表达式。
  • .*表示匹配任意数量的任意字符(换行符除外,除非在re.DOTALLre.S模式下)。
  • 由于它是贪婪的,它会尽可能多地匹配字符,直到找到最后一个>
  • 例如,对于字符串<a>hello</a><b>world</b>,这个模式会匹配整个<a>hello</a><b>world</b>,因为它会尽可能多地匹配字符。
  1. <.*?>:
  • 这是一个懒惰模式(lazy pattern)或最小匹配(minimal matching)的正则表达式。
  • .*?表示匹配任意数量的任意字符,但尽可能少地匹配。
  • 它会在遇到第一个>时停止匹配。
  • 对于同样的字符串<a>hello</a><b>world</b>,这个模式会分别匹配<a></a>,然后是<b></b>,因为它在每次遇到>时都会停止匹配。

在处理HTML时,通常建议使用HTML解析库(如BeautifulSoup)而不是正则表达式,因为HTML的结构可能会很复杂,正则表达式可能无法正确处理所有情况。但是,如果你确实需要使用正则表达式,并且想要匹配单个HTML标签(而不是标签内的内容),那么懒惰模式通常是更好的选择。

简述用过的爬虫框架或者模块有哪些?优缺点?

在Python中,有多种爬虫框架和模块可供选择,每个都有其独特的优缺点。以下是我曾经使用过的一些爬虫框架和模块,以及它们的优缺点:

  1. Requests
  • 优点:Requests是一个简洁且人性化的HTTP库,它比Python内置的urllib模块更加易用。Requests支持HTTP连接保持和连接池,并且能在多个请求之间保持某些参数。
  • 缺点:Requests不支持异步请求,这在处理大量请求时可能会成为性能瓶颈。
  1. BeautifulSoup
  • 优点:BeautifulSoup是一个用于解析HTML和XML文档的库,它创建了一个解析树,从中可以提取和操作数据。它非常适合于从网页中提取结构化数据。
  • 缺点:BeautifulSoup在处理大型文档时可能会变得相对较慢,并且它不能处理JavaScript生成的内容。
  1. Scrapy
  • 优点:Scrapy是一个为了爬取网站数据,提取结构性数据而编写的应用框架。它可以应用在包括数据挖掘,信息处理或存储历史数据等一系列的程序中。Scrapy用途广泛,可以用于数据挖掘、监测和自动化测试。
  • 缺点:Scrapy的设置和使用相对复杂,对于初学者来说可能有一定的学习曲线。并且,Scrapy在处理反爬虫机制方面可能需要额外的配置和努力。
  1. Selenium
  • 优点:Selenium可以模拟真实的用户行为,如点击、输入等,因此可以爬取JavaScr
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值