【PyHacker编写指南】打造URL批量采集器

这节课是巡安似海PyHacker编写指南的《打造URL批量采集器》

喜欢用Python写脚本的小伙伴可以跟着一起写一写呀。

编写环境:Python2.x

00×1

需要用到的模块如下:

import requestsimport re

本文将用re正则进行讲解,如果你用Xpath也可以

00×2:

首先,我们要选择搜索引擎(其他搜索引擎也有同样的原则)

[En]

First of all, we have to select the search engine (other search engines have the same principle)

以bing为例:Cn.bing.com

首先分析bing翻页机制:

https:https:https:

页数 = First*10

分析完后,让我们来看看。

[En]

After the analysis, let’s ask for a look.

python;gutter:true; 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</p> <pre><code> ![](https://mmbiz.qpic.cn/mmbiz_png/RUnwTiclM236Zy1eA6CAhav2Qdyjw0OXkcJMx2aGD7lOVtXu9h1NFXb3NdOicqVeKPVfHmiaUUAdNyvAPvyKPMwIw/640?wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1) Ok,没毛病 00x3: 分析需要采集的url在哪个位置 ![](https://mmbiz.qpic.cn/mmbiz_png/RUnwTiclM236Zy1eA6CAhav2Qdyjw0OXkxZlyiaNB6olTvk9OIMjKwOIlKyeZAeMsDOL7KKsS1ibgWBpu8qKA3k3Q/640?wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1) 得出正则:(.*?) 正则表达式学习:(百度搜:python 正则表达式) ;gutter:true;
def reurl():
urlr = r'(.*?)’
reurl = re.findall(urlr,html)
print reurl

【PyHacker编写指南】打造URL批量采集器

当我要求第二页时,我发现了问题。

[En]

I found the problem when I asked for the second page.

【PyHacker编写指南】打造URL批量采集器

您可以看到,请求的内容与第一页相同,并且有某种验证机制。

[En]

You can see that the content of the request is the same as the first page, and there is some kind of verification mechanism.

通常,验证机制代表特定的参数

[En]

In general, the verification mechanism represents a specific parameter

经过多次测试,发现缺少 Cookie: _EDGE_V=1;

【PyHacker编写指南】打造URL批量采集器

【PyHacker编写指南】打造URL批量采集器

请求正常,大致已经完成

接下来只需要给关键词和页数变量就ok了

0 0x4:

再搜索site:baidu.com 又出现了问题

【PyHacker编写指南】打造URL批量采集器

于是修改正则为:

<span class="code-snippet_outer">'target=<span class="code-snippet__string">"_blank" href=<span class="code-snippet__string">"(http.*?\..*?\..*?)" h=<span class="code-snippet__string">"'</span></span></span></span>

【PyHacker编写指南】打造URL批量采集器

有很多我们不想要的结果,我们再来遍历下采集的urls

做一下处理

正则为:

python;gutter:true; (http[s]?://.*?)/</p> <pre><code> 代码为: ;gutter:true;
def url():
for url in urls:
urlr = r'(http[s]?://.*?)/’
url = re.findall(urlr,url)
print url

【PyHacker编写指南】打造URL批量采集器

print url 改为 print url[0] 再进行处理一下

可以看到下面还有重复的url,对url去重一下

python;gutter:true; def qc():#去重复 for url in url_ok: if url in url_bing: continue url_bing.append(url)</p> <pre><code> ![](https://mmbiz.qpic.cn/mmbiz_png/RUnwTiclM236Zy1eA6CAhav2Qdyjw0OXk70QL43Uf6icicsz2F6kFiaRzGBuDKHnGqEA7CnvbQAib61ofTwxFQ3KjbQ/640?wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1) 00x5: 接下来我们要让他自动保存到url_bing.txt ;gutter:true;
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"

00×6:

完整代码:

python;gutter:true;</p> <h1>!/usr/bin/python</h1> <h1>-<em>- coding:utf-8 -</em>-</h1> <p>import requests import re</p> <p>urls = [] url_ok = [] url_bing=[]</p> <p>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</p> <p>def reurl():#正则匹配url urlr = r'target="_blank" href="(http.<em>?..</em>?..*?)" h="' reurl = re.findall(urlr,html) for url in reurl: if url not in urls: urls.append(url)</p> <p>def url():#url二次处理 for url in urls: urlr = r'(http[s]?://.*?)/' url = re.findall(urlr,url) url_ok.append(url[0])</p> <p>def qc():#去重复 for url in url_ok: if url in url_bing: continue url_bing.append(url)</p> <p>if <strong>name</strong> == '<strong>main</strong>': 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批量采集器

Original: https://www.cnblogs.com/XunanSec/p/pyhacker_urlcaiji.html
Author: 巡安似海
Title: 【PyHacker编写指南】打造URL批量采集器

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/499597/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • Django数据库报错相关问题总结(初始化、迁移等)

    整理学习Django过程中遇到的问题 如何新建用户 新建超级用户 python manage.py createsuperuser 在命令行中依次输入用户名、邮箱地址(选填,可为空…

    Python 2023年8月4日
    0101
  • OpenCV数组矩阵作业

    1、以下关于数组操作函数说法错误的是?(20 分) A.numpy.reshape可以在不改变数据的条件下修改数组的行列数 B.通过numpy.ndarray.flat迭代函数可以…

    Python 2023年8月28日
    071
  • 初识Django

    基本概念理解 1.http协议 HTTP 协议是接下来学习网站框架最重要的协议 HTTP (HyperText Transfor Protocol) 超文本传输协议是互联网目前应用…

    Python 2023年8月3日
    089
  • 《The way to go学习笔记》第三章

    构建并运行Go程序 gofmt 每次构建程序之前都会自动调用源码格式化工具 gofmt并将格式化后的源码保存。 如果构建成功则不会出现任何信息,构建失败会出现对应的错误,如 a d…

    Python 2023年6月9日
    0117
  • 树莓派智能小车的购买选择、硬件原理、程序编写全套教程

    一、小车器件购买选型 教程里是购买的淘宝上集成好的小车器件。另外自己也买了一些散件配置了一辆自己的小车。https://detail.tmall.com/item.htm?id=6…

    Python 2023年9月20日
    0112
  • 使用Python批量提取TRMM降水数据均值

    Original: https://www.cnblogs.com/123456feng/p/16129685.htmlAuthor: 蚂蚁ailingTitle: 使用Pytho…

    Python 2023年11月3日
    0131
  • 两周45亿票房!用Python爬取长津湖,分析它好看在哪里!

    10月黄金周,乃至整个10月,短短半个月时间,《长津湖》全球票房已突破44亿元,险些赶上《战狼2》,猫眼评分9.5,口碑超高,2021票房口碑双丰收黑马! [En] During …

    Python 2023年5月25日
    0116
  • 35.文件上传

    Admin900网管软件是一款简单实用的网管软件,软件由南京网亚计算机有限公司研发,其强大的功能不仅被用户用于网吧管理,还能够针对企业用户下的所有员工机进行管理。该网管软件是管理员…

    Python 2023年8月3日
    0145
  • Java基本语法

    原文链接 1 输出 System.out.print("sys_num:" + sys_num + "\n"); 2 String截取 截取…

    Python 2023年5月24日
    0110
  • 自动化框架之setup,teardown和pytest的fixture装饰器

    1.初始化,清除(setup,teardown) 对 自动化测试框架来说,初始化,清除功能非常重要!!! 该功能的作用:主要是用来为该 &#x6A21;&#x575…

    Python 2023年9月10日
    089
  • 数据分析(2)Matplotlib绘制2D图表

    文章目录 * – 一. 线型图 – + (一)绘制单条线型图 + (二)绘制多条线型图 + (三)绘制折线图 – 二. 直方图与密度图 &#82…

    Python 2023年9月4日
    099
  • python实现计算标准偏差函数

    python实现计算标准偏差函数 原创 CorwinPC2022-07-18 17:49:37博主文章分类:Python ©著作权 文章标签 标准偏差公式 数据值 数据分布 算术平…

    Python 2023年5月25日
    0145
  • C++文件操作

    1.创建文件流 创建文件流需要包含头文件 #include 创建文件输入流对象 ofstream file; 创建文件输出流对象 ifstream file; 2.写入文本文件 1…

    Python 2023年9月30日
    087
  • pyqt5做了一个二维码生成器,已打包成exe可执行程序…

    个性化二维码的exe桌面应用的获取方式我放在文章最后面了,注意查收。通过执行打包后的exe应用程序可以直接运行生成个性化二维码。 在我们开始之前,让我们来看看个性化的二维码是如何通…

    Python 2023年5月24日
    0153
  • Django-创建一个完整的项目-详细教程

    📚创建Django完整项目 编译器:Pycharm数据库:Mysql 本文档将详细说明如何创建一个完整的Django项目.在下个文档会讲解如何连接mysql数据库并利用python…

    Python 2023年8月4日
    0113
  • Redis的数据复制

    介绍 Redis 的复制 Redis 的复制功能分为同步(sync)和命令传播(command propagate)这两个操作 同步操作用于,将从服务器的数据库状态更新至主服务器当…

    Python 2023年10月11日
    084
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球