PyHacker编写URL批量采集器 |
您所在的位置:网站首页 › url采集工具 › PyHacker编写URL批量采集器 |
PyHacker编写URL批量采集器
2023-01-27 13:15巡安似海 Python 这篇文章主要为大家介绍了SpringBoot整合VUE EasyExcel实现数据导入导出,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪 喜欢用Python写脚本的小伙伴可以跟着一起写一写呀。 编写环境:Python2.x 00x1:需要用到的模块需要用到的模块如下: import requests import re本文将用re正则进行讲解,如果你用Xpath也可以 00x2:选取搜索引擎 首先我们要选取搜索引擎(其他搜索引擎原理相同) 以bing为例:Cn.bing.com 首先分析bing翻页机制: https://cn.bing.com/search?q=内容&first=0 第一页 https://cn.bing.com/search?q=内容&first=10 第二页 https://cn.bing.com/search?q=内容&first=20 第三页页数 = First*10 分析完毕,我们来请求看一下 def req(): url = 'https://cn.bing.com/search?q=小陈&first=0' headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:60.0) Gecko/20100101 Firefox/60.0'} req = requests.get(url,headers=headers) html = req.content print html
Ok,没毛病 00x3:分析需要采集的url 分析需要采集的url在哪个位置
得出正则:(.*?) 正则表达式学习:(百度搜:python 正则表达式) def reurl(): urlr = r'(.*?)' reurl = re.findall(urlr,html) print reurl
就在我请求第二页的时候发现了问题
可以看到请求内容和第一页一样,有某种验证机制 一般情况下验证机制,表示特定参数 经过多次测试,发现缺少 Cookie: _EDGE_V=1;
请求正常,大致已经完成 接下来只需要给关键词和页数变量就ok了 00x4:搜索 再搜索site:baidu.com 又出现了问题
于是修改正则为: 'target="_blank" href="(http.*?\..*?\..*?)" h="'
有很多我们不想要的结果,我们再来遍历下采集的urls 做一下处理 正则为: (http[s]?://.*?)/代码为: def url(): for url in urls: urlr = r'(http[s]?://.*?)/' url = re.findall(urlr,url) print url
print url 改为 print url[0] 再进行处理一下 可以看到下面还有重复的url,对url去重一下 def qc():#去重复 for url in url_ok: if url in url_bing: continue url_bing.append(url)
00x5:自动保存 接下来我们要让他自动保存到url_bing.txt with open('url_bing.txt','a+')as f: for url in url_bing: print url f.write(url+"\n") print "Save as url_bing.txt"00x6:完整代码 #!/usr/bin/python #-*- coding:utf-8 -*- import requests import re urls = [] url_ok = [] url_bing=[] def req(q,first): global html url = 'https://cn.bing.com/search?q=%s&first=%s'%(q,first) print url headers = { 'Host':'cn.bing.com', 'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3314.0 Safari/537.36 SE 2.X MetaSr 1.0', 'Cookie': '_EDGE_V=1;' } req = requests.get(url,headers=headers) html = req.content def reurl():#正则匹配url urlr = r'target="_blank" href="(http.*?\..*?\..*?)" h="' reurl = re.findall(urlr,html) for url in reurl: if url not in urls: urls.append(url) def url():#url二次处理 for url in urls: urlr = r'(http[s]?://.*?)/' url = re.findall(urlr,url) url_ok.append(url[0]) def qc():#去重复 for url in url_ok: if url in url_bing: continue url_bing.append(url) if __name__ == '__main__': q = raw_input('\nkey:') page = input('page:') for first in range(0, page): req(q, first * 10) reurl() url() qc() with open('url_bing.txt','a+')as f: for url in url_bing: print url f.write(url+"\n") print "Save as url_bing.txt" 以上就是PyHacker编写URL批量采集器的详细内容,更多关于PyHacker批量采集URL的资料请关注服务器之家其它相关文章! 原文链接:https://www.cnblogs.com/look-word/p/16269739.html |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |