PyHacker编写URL批量采集器

 更新时间:2022年05月14日 14:34:02   作者:巡安似海  
这篇文章主要为大家介绍了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'<cite>(.*?)</cite>'
    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的资料请关注脚本之家其它相关文章!

相关文章

  • centos 安装Python3 及对应的pip教程详解

    centos 安装Python3 及对应的pip教程详解

    这篇文章主要介绍了centos 安装Python3 及对应的pip的教程,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-06-06
  • django中send_mail功能实现详解

    django中send_mail功能实现详解

    这篇文章主要给大家介绍了关于django中send_mail功能实现的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧。
    2018-02-02
  • python中format函数如何使用

    python中format函数如何使用

    在本篇内容里小编给大家整理的是一篇关于python的format函数用法以及相关实例,需要的朋友们学习下。
    2020-06-06
  • Python基础教程之pip的安装和卸载

    Python基础教程之pip的安装和卸载

    pip是一种工具,可以帮助用户安装卸载一些需要的安装包,非常的简单实用,下面这篇文章主要给大家介绍了关于Python基础教程之pip的安装和卸载的相关资料,文中通过图文介绍的非常详细,需要的朋友可以参考下
    2022-06-06
  • 关于Python中空格字符串处理的技巧总结

    关于Python中空格字符串处理的技巧总结

    在我们日常工作中经常会遇到字符串处理,大家应该都不陌生,但空格字符串呢?会不会就不太熟悉了呢?所以下面这篇文章就来给大家总结了关于Python中空格字符串处理的技巧,需要的朋友可以参考借鉴,下面来一起看看吧。
    2017-08-08
  • python中的单引号双引号区别知识点总结

    python中的单引号双引号区别知识点总结

    在本篇文章中小编给大家整理了关于python中的单引号双引号有什么区别的相关知识点以及实例代码,需要的朋友们参考下。
    2019-06-06
  • Pytorch限制或增加CPU使用的核数方式

    Pytorch限制或增加CPU使用的核数方式

    这篇文章主要介绍了Pytorch限制或增加CPU使用的核数方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-02-02
  • 如何让利用Python+AI使静态图片动起来

    如何让利用Python+AI使静态图片动起来

    这篇文章主要介绍了如何让利用Python+AI使静态图片动起来,基于的GAN生成对抗网络围绕主题实现静态图片动起来的效果。具有一定的参考价值,需要的小伙伴可以参考一下
    2022-06-06
  • Python+appium框架原生代码实现App自动化测试详解

    Python+appium框架原生代码实现App自动化测试详解

    这篇文章主要介绍了Python+appium框架原生代码实现App自动化测试详解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-03-03
  • python pdfkit 中文乱码问题的解决方案

    python pdfkit 中文乱码问题的解决方案

    这篇文章主要介绍了python pdfkit 中文乱码问题的解决方案,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-03-03

最新评论