用PyHacker实现URL批量采集器怎样做呢
Admin 2022-09-02 群英技术资讯 1288 次浏览
这篇文章主要讲解了“用PyHacker实现URL批量采集器怎样做呢”,文中的讲解内容简单、清晰、详细,对大家学习或是工作可能会有一定的帮助,希望大家阅读完这篇文章能有所收获。下面就请大家跟着小编的思路一起来学习一下吧。需要用到的模块如下:
import requests import re
本文将用re正则进行讲解,如果你用Xpath也可以
首先我们要选取搜索引擎(其他搜索引擎原理相同)
以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,没毛病
分析需要采集的url在哪个位置

得出正则:(.*?)
正则表达式学习:(百度搜:python 正则表达式)
def reurl():
urlr = r'<cite>(.*?)</cite>'
reurl = re.findall(urlr,html)
print reurl

就在我请求第二页的时候发现了问题

可以看到请求内容和第一页一样,有某种验证机制
一般情况下验证机制,表示特定参数
经过多次测试,发现缺少 Cookie: _EDGE_V=1;


请求正常,大致已经完成
接下来只需要给关键词和页数变量就ok了
再搜索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)

接下来我们要让他自动保存到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"
#!/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"
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。
猜你喜欢
大家好,本篇文章主要讲的是python绘制超炫酷动态Julia集示例,感兴趣的痛学赶快来看一看吧,对你有帮助的话记得收藏一下,方便下次浏览
Keras是一个用于在python上搭神经网络模型的框架,语法和torch比较相似。我个人认为Keras最大的特点是包装很好,一些在训练过程中要输出的方法和常用的优化函数、目标函数都已经内置了,非常适合用来写大作业。Keras和python的哲学有些相似,那就是尽量不自己造轮子
Matplotlib是Python程序员可用的事实上的绘图库,虽然它比交互式绘图库在图形上更简单,但它仍然可以一个强大的工具,下面这篇文章主要给大家介绍了关于Python matplotlib绘图时使用鼠标滚轮放大/缩小图像的相关资料,需要的朋友可以参考下
python图片批量压缩有什么方法?我们在做项目的时候,可能会使用到图片,而图片太大,那么对于加载速度有一定的影响,因此对图片文件压缩是很有必要的,而一张张图片分别压缩是不太可能,对此,下面我们就来看看python如何实现图片批量压缩。
在玩python学习机器时,对于那种对随机性不太敏感的模型,理论上说可以不打乱。但敏感不敏感也跟数据量级,复杂度,算法内部计算机制都有关,目前并没有一个经纬分明的算法随机度敏感度列表。既然打乱数据并不会得到一个更差的结果,一般推荐的做法就是打乱全量数据。那怎么打乱呢?
成为群英会员,开启智能安全云计算之旅
立即注册关注或联系群英网络
7x24小时售前:400-678-4567
7x24小时售后:0668-2555666
24小时QQ客服
群英微信公众号
CNNIC域名投诉举报处理平台
服务电话:010-58813000
服务邮箱:service@cnnic.cn
投诉与建议:0668-2555555
Copyright © QY Network Company Ltd. All Rights Reserved. 2003-2020 群英 版权所有
增值电信经营许可证 : B1.B2-20140078 ICP核准(ICP备案)粤ICP备09006778号 域名注册商资质 粤 D3.1-20240008