通过关键词采集文章采集api(思路和部分代码引用迪艾姆培训黄哥python爬虫联想词视频)

优采云 发布时间: 2022-01-06 08:08

  通过关键词采集文章采集api(思路和部分代码引用迪艾姆培训黄哥python爬虫联想词视频)

  思路和部分代码参考了Diem python训练黄哥python爬虫联想词视频,不过太罗嗦了,顺便说一句,现在,360不傻,进化了,用原来的方法,有点bug,我稍后会谈到这个。题目如下:

  语言:python2.7.6

  模块:urllib、urllib2、re、时间

  目标:输入任何单词并捕获其关联的单词

  版本:w1

  原理:在360搜索首页:当你输入“科技”时,搜索框会列出相应的关联词或词组。我们只想得到这些关联词,那我们就得爬上360搜索引擎。在输入关键词之前,我们在首页右击,“评论元素”——“网络”——“名称”,输入后,下面会出现对应的超链接,我们只观察“标题”和“预览” ”,在“Headers”下我们可以看到“Request URL”和头信息(主机、代理等),并看到我在“Priview”中输入的示例:

  Suggest_so({"query":"Technology","re​​sult":[{"word":"Technology Aesthetics"},{"word":"Technology Court"},{"word":"Technology Department"},{ "word":"科技管理研究"},{"word":"科技妹喵","obdata":"{\"t\":\"video\",\"d\":[2 ,\ "http:\/\/\/d\/dy_acba03288ce64a69a324a94921324cb6.jpg\",\"\u9ad8\u79d1\u6280\u5c11\u5973\u55b5:\",\ /tv \/Q4pwcH3lRG4lNn.html\",3,12]}"},{"word":"科技日报"},{"word":"科技发展有很大的优势或劣势"},{ "word":"技术超王"},{"word":"Technet"},{"word":"科技进步与对策"}],"version":"a"});

  显然,我们只需要抓住里面的文字,而忘记解释。在请求 URL 中有一个链接:obdata&word=%E7%A7%91%E6%8A%80%20。我们多次输入,发现,它变成了只是“%E7%A7%91%E6%8A%80%20”部分,也就是说前面的部分保持不变,我们可以直接使用,后面的部分就是与输入关键词不同,不过这是一种URL编码,可以通过urllb.quote()方法实现。

  操作:1.添加头信息,读取网页,相关方法:urllib2.Request(), urllib2.urlopen(), urllib2, urlopen().read()

  2.正则匹配:方法:re模块的相关用法,发表自己的看法。.

  代码显示如下:

  #coding:utf-8

import urllib

import urllib2

import re

import time

gjc = urllib.quote("科技")

url = "http://sug.so.360.cn/suggest?callback=suggest_so&encodein=utf-8&encodeout=utf-8&format=json&fields=word,obdata&word="+gjc

print url

req = urllib2.Request(url)

html = urllib2.urlopen(req).read()

unicodePage = html.decode("utf-8")

#正则表达式,findall方法返回一个列表

ss = re.findall('"word":\"(.*?)\"',unicodePage)

for item in ss:

print item

  结果:

  

  如果不加unicodePage = html.decode("utf-8"),返回值会穿插一些乱码。验证一下我们做的是否正确,打开360搜索,输入“技术”,结果如下:

  

  别纠结了,第一个和第二个相关词的顺序,当我第二次请求的时候,就变成了上图的结果。我再次请求它,它又变回来了。也许360正在改变。你可以使用它。尝试其他关键词。

  好了,框架已经大致实现了。这是初始版本,不能没有任何限制地使用。我们要做的就是畅通无阻,那有什么问题呢?

<p>问题:1.多次请求会报错,大概代号是1005,意思是百度下载了,好像是说网站会限制非人为请求,那我们就假装要成为用户正常打开

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线