php 正则 抓取网页(以爬取国家地理中文网中的旅行类中的图片为例)
优采云 发布时间: 2022-01-21 03:09php 正则 抓取网页(以爬取国家地理中文网中的旅行类中的图片为例)
本文以爬取国家地理中文网旅游分类中的图片为例,演示爬虫的基本功能。
给定初始地址
国家地理中文网:
捕获和分析 Web 内容
一个。分析网页的结构并确定所需的内容部分
我们打开网页,右键选择“显示网页源代码”查看网页结构,以下是我截取的部分
我们会发现,图片类型的数据是放在标签的 scr="" 中的。我们只需要找到这些标签并提取我们想要完成我们期望的连接。
湾。获取网页内容
提取内容,首先我们要向服务器发起请求,获取文件,分析提取其中的图片信息,整理保存数据
笔者使用Python3.6,常用的获取网页内容的方式有两种:requests和urllib(python2中合并urllib和urllib2),获取网页内容请参考:爬虫基础:python获取网页内容
现在,我们定义一个方法 crawl() 来获取网页
import requests
def crawl(url, headers):
with requests.get(url=url, headers=headers) as response:
# 读取response里的内容,并转码
data = response.content.decode()
return data
调用该方法获取网页内容:
# 获取指定网页内容
url = 'http://www.ngchina.com.cn/travel/'
headers = {'User-Agent':'Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.139 Mobile Safari/537.36'}
content = crawl(url, headers)
print(content)
编写正则表达式以匹配图像内容
这样,我们抓取给定地址中的图像信息,我们选择其中一个:
清点并进行下一轮爬取
我们爬取了指定的内容后,就可以保存到数据库中了;如果是链接式爬取,我们可以创建一个url队列,将指定url中的新链接添加到url队列中,然后进行一轮的遍历和爬取,对于队列url的处理,需要根据具体要求采取相应的策略来完成相应的任务工作。更多爬虫信息请参考:初始爬虫。
补充:
我们在写正则表达式的时候,可以使用在线正则表达式工具快速查看匹配结果:菜鸟正则表达式工具,这个地址里面有一些常用的正则表达式已经写好了,比如电话、QQ号、URL、邮箱等,非常好用。