5分钟上手Python爬虫,轻松掌握爬虫技巧

许多人对爬虫技术有所耳闻,我也不例外。之前看到过一些爬虫代码,虽然没有深入研究,但其强大功能给我留下了深刻印象。所以今天我决定从零开始,仅用5分钟入门爬虫技术,以后只需轻松一爬就能获取所有感兴趣的网站内容。广告?不存在的,因为爬虫只会获取我需要的信息,其他内容对我来说只是一堆代码。我们不关注网站的界面,只关注核心内容。

在这个过程中,技术本身并不复杂,更多的是一项需要耐心的工作。因此,许多人选择做爬虫兼职,因为尽管耗时较长,但技术门槛并不高。今天学完后,你就不会再觉得爬虫困难了。将来你可能需要考虑如何保持会话(session)或绕过验证等问题,因为有些网站并不希望被爬取,这部分内容最具挑战性,今后可以深入探讨。

今天我们以选择菜谱为例,解决生活中的“吃什么”难题。

爬虫解析

爬虫的原理类似于模拟用户浏览网站的操作:首先访问网站,检查是否有需要点击的链接,有则继续点击查看。当找到所需的图片或文字时,就可以下载或复制。这种爬虫的基本架构如图所示,希望这样的描述能帮助你更好地理解。

爬网页HTML

在爬虫工作中,第一步通常是发送一个HTTP请求以获取返回的数据。我们通常请求一个链接以获取JSON格式的信息以便处理。但对于爬虫来说,我们需要首先获取网页内容,这一步通常返回的是HTML页面。Python中有很多请求库,我这里举一个例子,你可以根据需求选择其他库,只要能完成任务即可。

在开始爬虫工作之前,需要安装所需的第三方库。这部分很简单,只需根据需要安装即可,没有复杂步骤。

让我们直接看代码示例:

from urllib.request import urlopen, Request

headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36 Edg/122.0.0.0'}
req = Request("https://www.meishij.net/?from=space_block", headers=headers)
html = urlopen(req)
html_text = bytes.decode(html.read())
print(html_text)

通常情况下,我们可以获取到这个菜谱网页的完整内容,就像在浏览器中按F12查看的网页源代码一样。

解析元素

最笨的方法是使用字符串解析,但Python有很多第三方库可以帮助我们,比如BeautifulSoup。其他解析方法不再赘述,需要什么就去搜索,记住常用的就好。

让我们解析热门搜索中的菜谱:

from urllib.request import urlopen, Request
from bs4 import BeautifulSoup as bf

headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36 Edg/122.0.0.0'}
req = Request("https://www.meishij.net/?from=space_block", headers=headers)
html = urlopen(req)
html_text = bytes.decode(html.read())
obj = bf(html_text, 'html.parser')
index_hotlist = obj.find_all('a', class_='sancan_item')

for ul in index_hotlist:
    for li in ul.find_all('strong', class_='title'):
        print(li.get_text())

主要步骤是,先打印出HTML页面,通过观察确定所需内容位于哪个元素下,然后用BeautifulSoup定位并提取所需信息。这里我提取的是文字内容,成功提取了所有li列表元素。

随机干饭

选择吃什么是难题。我们可以将所有菜谱解析并存储在一个列表中,然后随机选择,这样就能轻松解决每顿饭吃什么的问题。

随机选取一道菜的代码示例:

from urllib.request import urlopen,
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值