这个需要用到Python的解析库lxml和xpath的知识,不知道的同学请自行百度,菜鸟或者w3c都有,十分钟就能搞定个大概,剩下的还是实战磨合比较好 话不多说,先确定目标,还是那个网站,我们先来爬取一张首页展示的一个套图的标题和点进去的url链接 就这个吧,含蓄点,不然我怕会出事(尴尬的笑了笑) 首先让我们按下F12,定位到标题和链接的位置 哦,巧了,注意一下下面的红方框,两者竟然在一起 那方便了,xpath路径大差不差 接下来上代码,不过这里我就不爬取这一个了,而是把这一页的所有标题和链接都爬出来(话说哪有爬虫只爬一个呢,我还不如右键复制粘贴)
import requests #请求库用于发送请求 from lxml import html headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.132 Safari/537.36' } def GetMessage(url): page = requests.get(url=url,headers=headers) #也可以直接url,不过这里习惯了url= tree = html.fromstring(page.text) #把那些html按照结构排一下,类似于目录结构吧 title = tree.xpath('//span/a/text()') name = tree.xpath('//span/a/@href') print(title) print(name) if __name__ == '__main__': url = 'https://www.mzitu.com' GetMessage(url)数据出来了,但是这个看着怎么这么违和呢? 我们稍微调整一下吧
import requests #请求库用于发送请求 from lxml import html headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.132 Safari/537.36' } def GetMessage(url): page = requests.get(url=url,headers=headers) #也可以直接url,不过这里习惯了url= tree = html.fromstring(page.text) #把那些html按照结构排一下,类似于目录结构吧 title = tree.xpath('//span/a/text()') url = tree.xpath('//span/a/@href') message = [] for i in range(len(title)): mess = {'title': title[i],'url':url[i]} message.append(mess) print(message) if __name__ == '__main__': url = 'https://www.mzitu.com' GetMessage(url)看,这个数据格式是不是就看着舒服了?