这是我参与8月更文挑战的第4天,活动详情查看:8月更文挑战
爬取目标
网址:知乎热榜
工具使用
开发环境:win10、python3.7
开发工具:pycharm、Chrome
工具包:requests,lxml, re
项目思路解析
先对目标网址发送网络请求,《import requests 》工具包是要下载的哈,最好是在pycharm里面下载。点击工具栏如下图:
然后在输入pip install 就是下载别的命令的,如下图:
然后在热搜的空白界面鼠标右键点击弹出的选项查看源代码,可以发现标题,在获取到网页数据,提取到标题数据如下图:
获取了网页数据,我们就要通过xpath提取对应图片地址
获取详情内容地址,详情地址并不在a标签内哦,我们要用正则提取详情页面地址:
详情url需要进行分割替换,获取准确的url地址
简易源码分享
import re # 正则表达式
import requests # 发送网络请求
from lxml import etree # 转换数据的
# 同意资源定位符
url = 'https://www.zhihu.com/billboard'
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 5.1) AppleWebKit/535.11 (KHTML, like Gecko) Chrome/17.0.963.84 Safari/535.11 SE 2.X MetaSr 1.0',
}
# 发送网络请求
response = requests.get(url, headers=headers)
# print(response.text)
# 提取数据 xpath方式 提取数据 正则 bs4
new_url_list = re.findall('link":{"url":"(.*?)"}', response.text)
print(new_url_list)
html_object = etree.HTML(response.text)
a_list = html_object.xpath('//a[@class="HotList-item"]')
# print(a_list)
for a, new_url in zip(a_list, new_url_list):
title = a.xpath('.//div[@class="HotList-itemBody"]/div[1]/text()')[0]
url1 = new_url.replace('u002F', '')
img_url = a.xpath('./div[@class="HotList-itemImgContainer"]/img/@src')[0]
f = open('知乎热榜数据.text', "a", encoding='utf-8')
f.write("标题:" + title + '\n')
f.write("文章地址:" + url1 + '\n')
f.write("图片地址:" + img_url + "\n")
f.write("\n")
我是白又白i,一名喜欢分享知识的程序媛❤️
如果没有接触过编程这块的朋友看到这篇博客,发现不会的或者想要学习Python的,可以直接留言或者私我【非常感谢你的点赞、收藏、关注、评论,一键四连支持】