52android 发表于 2022-6-29 23:54

selenium爬取jike时间专栏保存成mhtml,<a>标签没有href属性怎么办

问题:selenium 爬取 jike时间专栏保存成 mhtml,<a>标签没有href属性怎么办?

比如:https://time.geekbang.org/column/article/408400   这里的「代码」就没有href属性,就算 Ctrl + S 保存下来也是没有 href 属性的,但是原网页是可以点击的




lys76 发表于 2022-6-30 00:11

不懂楼主的需求。

如果你是要点击a标签,你可以直接获取a标签的XPATH.然后加click()。selenium就会控制浏览器去点击这个a标签。

52android 发表于 2022-6-30 00:16

本帖最后由 52android 于 2022-6-30 00:19 编辑

lys76 发表于 2022-6-30 00:11
不懂楼主的需求。

如果你是要点击a标签,你可以直接获取a标签的XPATH.然后加click()。selenium就会控制 ...
就是通过selenium控制浏览器,自动静默保存网页成单个文件(mhtml格式)。原网站的<a>标签虽然都是没有href属性的,但是都可以跳转。但是保存下来的网页就不能点击了,也就是专栏里的一些分享的一些资料什么的不知道具体的网址是什么。

vista_info 发表于 2022-6-30 01:09




如果没有href属性猜测网页做成动态的了,正常有属性的鼠标放在链接上面会看到浏览器下角显示网址。
之前爬过在js里面生成的网址的……,
大概用F12分析了一下,有个请求很有趣,看了一下标头返回的是json,其中某些内容就是文章的内容(含网址),后面的工作就要继续分析这个请求的参数,

vista_info 发表于 2022-6-30 01:11

本帖最后由 kai-memory 于 2022-6-30 01:26 编辑

kai-memory 发表于 2022-6-30 01:09
如果没有href属性猜测网页做成动态的了,正常有属性的鼠标放在链接上面会看到浏览器下角显示网址。
...
第二张图是用postman模拟了一下这个请求 返回的信息和网页上的信息一致,测试了修改参数可能正常获取其他id的文章内容

楚子沦i 发表于 2022-6-30 09:38

可以直接找请求,数据都有的。

我今天是大佬 发表于 2022-6-30 09:47

获得其他请求地址的参数是个难题

52android 发表于 2022-6-30 09:49

kai-memory 发表于 2022-6-30 01:11
第二张图是用postman模拟了一下这个请求 返回的信息和网页上的信息一致,测试了修改参数可能正常获取其他i ...

这个请求我知道,拿到的文章内容是没有渲染过的。现在估计只能用最蠢的办法了,找出现有网页所有的a标签link_list = chrome_driver.find_elements(By.XPATH, '//a[@data-slate-type="link"]') ,然后和这个article链接获得的元素里的a标签个数看看是不是一样的,是的话,就手动把href属性加上,然后再保存网页。另外一种终极办法:挨个在新标签页打开,然后获取地址栏的地址,关闭标签页,然后在手动加上href属性,但是也有隐患(如果新打开的页面自动跳转了,那么链接还是不对)

52android 发表于 2022-6-30 09:52

kai-memory 发表于 2022-6-30 01:11
第二张图是用postman模拟了一下这个请求 返回的信息和网页上的信息一致,测试了修改参数可能正常获取其他i ...

github上几百star的大佬做的工具也是没有解决这个问题,所以我这个爬虫新手看看自己能不能搞定,哈哈,看了下崔庆才的视频目录,看到 selenium 就决定用这个搞了

52android 发表于 2022-6-30 09:54

我今天是大佬 发表于 2022-6-30 09:47
获得其他请求地址的参数是个难题

我用 selenium 就是不想搞这些参数问题,直接模拟浏览器,再加登录后的cookie,写好之后,估计能用很久都不用改
页: [1] 2
查看完整版本: selenium爬取jike时间专栏保存成mhtml,<a>标签没有href属性怎么办