2022年爬取拉勾网详情页面地址信息
,但就是没有对应的地址信息,但我们点开每个岗位信息可以看到,地址中唯一有变化的就是html前面的数字。
所以现在的问题是找到前面的数字存在了什么地方,直接搜索:
点开第一个,这里有个key值为,猜测可能所有岗位详情页面都有一个对应的,只要找到每一个对应的id就可以自己构造url,访问到详情页面。
拉勾网把具体网页地址的id放在了网页源代码底下的标签中,把他们复制出来,查看一下是是否是json数据:
果然是json形式的数据(如果直接在网页源代码中查看这部分数据,会发现到了最后面数据不全,json数据识别不出来,所以我是直接用让代码去拿去网页的数据,就可以看到全部的json数据)
测试代码如下:
import requests
from selenium import webdriver
import re
from lxml import etree
import jsonurl = "https://www.lagou.com/wn/jobs?pn=1&cl=false&fromSearch=true&kd=python"
url_temp = "https://www.lagou.com/wn/jobs/{}.html"
drivers = webdriver.Chrome()
drivers.get(url)
html_str = drivers.page_source
html = etree.HTML(html_str)
json_str = html.xpath("//script[@id='__NEXT_DATA__']/text()")[0]
json_dict = json.loads(json_str)
list = []
for i in range(15): # 每次页面有15个岗位信息positionId = json_dict["props"]["pageProps"]["initData"]["content"]["positionResult"]["result"][i]["positionId"]print(url_temp.format(positionId))list.append(url_temp.format(positionId))
drivers.get(list[2]) # 测试一下构造的网页是否有效
最后测试了一下构造的网页是否有效,可以正常访问。
证明可以成功访问到!