爬项目:知乎热榜标题、热度、简介。
第一步浏览网页源代码 确认在哪html 还是js里
标题和热度在html
标签内容在js 需要用到正则表达式:
第二先爬html 里的内容调用模块—再请求一下url数据看看能否找到
#注意:爬出以下内容,加密的需要添加cookie 和user-agent
爬取xml内容, 调用BeautifulSoup模块
注意找html 属性时,代码如下:
soup =BeautifulSoup(html.text, 'lxml') # 引用ixml解析器
beautifulsoup divs = soup.select('.HotList-item') #锁定 class 的头部标签代码
for div in divs: # for循环
title = div.select('.HotList-itemTitle')[0].text #注意这个位置写.HotList-item.HotList-itemBody..HotList-itemTitle 锁定不到,原因是前面都是重合代码直接写title即可,只有表黄才能定位成功 ;select获取列表,锁定第一个[0]
Metrics = div.select('.HotList-itemMetrics')[0].text# 和上面title 一样定位。 print('标题:', title) print('热度:', Metrics)
爬标题和热度代码输入:
爬图片src和图片下载打包:import os
注意:有的图片是空,为了防止出现bug,建立防错机制:try: except: pass
标题、热度、图片结果:
第三步爬简介, 在js里,需要正则表达式 (.*?)
首先在显示源代码里找出js 里简介找到一条,复制代码和内容,然后删除文字,留下代码:
('"excerptArea":{"text":"(.*?)"}')
继续在下面写代码:引用findall