php用正则表达抓取网页中文章(以爬取国家地理中文网中的旅行类中的图片为例)
优采云 发布时间: 2021-10-23 01:00php用正则表达抓取网页中文章(以爬取国家地理中文网中的旅行类中的图片为例)
本文以爬取国家地理中文网站旅游类图片为例,演示爬虫的基本功能。
给定初始地址
国家地理中文网站:
获取和分析网页内容
一种。分析网页的结构以确定所需的内容
我们打开网页,右键选择“显示网页源代码”查看网页结构,以下是我截取的部分
我们会发现在标签的scr=""中放置了image类型的数据。我们只需要找到这些标签,从中提取出我们想要的联系,就可以完成我们的期望。
湾 获取网页内容
提取内容,首先要向服务器发起请求,获取文件,然后分析提取图片信息,整理保存数据
作者使用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号码、网址等。、邮箱等,非常好用。