输入关键字 抓取所有网页(如何在新浪搜索主页面中获取关键词的url链接)
优采云 发布时间: 2021-11-24 11:08输入关键字 抓取所有网页(如何在新浪搜索主页面中获取关键词的url链接)
前段时间写了一个爬虫。在新浪主搜索页面,输入关键词,抓取关键词相关新闻的标题、发布时间、url、关键词和内容。并根据内容提取摘要,计算相似度。下面说明我自己的想法,并给出代码的github链接:
1、获取关键词新闻页面url
在新浪搜索首页输入关键词,点击搜索后会自动链接到关键词的新闻界面。有两种方法可以获取该页面的 url。本文提供了三种方法。
1)静态爬取
从新浪搜索首页,输入关键词,进入kerwords相关新闻页面,手动获取url链接,然后将url中的关键词替换为需要输入的关键词获取新的url,发送new url 请求,获取页面的源代码。缺点:对于动态网页,URL是这样获取的,发送请求获取的网页源码与搜索界面手动输入关键词获取的网页源码不一致.
2)动态爬取
模拟浏览器行为并抓取 关键词 新闻相关页面。有两种方法,一种是确定使用的浏览器,使用程序调用浏览器,操作输入和搜索过程;另一种是使用浏览器来模拟没有界面的浏览器的行为。关键词 页面的 URL 和源代码。如图,进入搜索首页,输入关键词跳转到搜索结果页面。
2、分析关键词新闻页面信息
1)找到搜索到的新闻文章数,根据一页新闻数量计算出与关键词相关的新闻有多少页。找出不同页面的url之间的链接,生成翻页url。
如上图,新闻界面出现“7651条相关新闻”。使用正则匹配等方法得到'7651',根据新浪新闻搜索页面的一页出现的新闻m数计算相关新闻页数:Int(7651/m)。
2)在一个页面中,找到新闻的url。
查看页面源码,找到新闻对应的url。如上图所示,当新闻url出现时,同样的规则是"",所以可以按照这个规则提取页面源码中的所有url。
3、从新闻页面中提取信息
根据新闻url,进入新闻页面,找到标题、发布时间、关键词、内容、描述内容并提取。需要注意的一件事是解码问题。网页的源代码有不同的编码格式,所以要注意解码。
1)新闻中没有关键字,采用生成关键词的方法。根据新闻内容,计算内容中的词频,用词频确定输出词为关键词;
2) 新闻中的抽象生成基于石木博客的代码(链接如下:)。
3)关键词 与新闻相似。根据新闻标题、关键词和内容,分配不同的权重来计算相似度。具体思路如下:
a) 关键词和标题
关键字和标题都收录与输入词相关的词,权重为kT_W=0.8;只有标题收录输入词,相关词被赋予权重kT_W=0.7;only the key 词收录与输入词相关的词,权重为kT_W=0.6;其他权重是 kT_W=0.6。
b) 在新闻内容中:新闻内容中自然语言相关词的词频content_P
c) 最终的相似度计算公式为:
4、代码(运行环境python)
代码链接:
安装好相关模块后,附上需要下载的文件和代码中需要的文件。并给出对应的python2和python3代码