PyHacker编写URL批量采集器

作者:巡安似海 时间:2022-03-21 12:42:21 

喜欢用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

PyHacker编写URL批量采集器

Ok,没毛病

00x3:分析需要采集的url

分析需要采集的url在哪个位置

PyHacker编写URL批量采集器

得出正则:(.*?)

正则表达式学习:(百度搜:python 正则表达式)

def reurl():
   urlr = r'<cite>(.*?)</cite>'
   reurl = re.findall(urlr,html)
   print reurl

PyHacker编写URL批量采集器

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

PyHacker编写URL批量采集器

可以看到请求内容和第一页一样,有某种验证机制

一般情况下验证机制,表示特定参数

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

PyHacker编写URL批量采集器

PyHacker编写URL批量采集器

请求正常,大致已经完成

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

00x4:搜索

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

PyHacker编写URL批量采集器

于是修改正则为:

'target="_blank" href="(http.*?\..*?\..*?)" h="'

PyHacker编写URL批量采集器

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

做一下处理

正则为:

(http[s]?://.*?)/

代码为:

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去重一下

def qc():#去重复
   for url in url_ok:
       if url in url_bing:
           continue
       url_bing.append(url)

PyHacker编写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"

来源:https://www.cnblogs.com/look-word/p/16269739.html

标签:URL,批量采集,PyHacker
0
投稿

猜你喜欢

  • Python pytesseract验证码识别库用法解析

    2023-06-13 19:04:02
  • 详解Python类和对象内容

    2021-03-12 23:38:55
  • Flask 入门系列 Cookie与session的介绍

    2022-06-21 00:45:44
  • python中pandas.DataFrame的简单操作方法(创建、索引、增添与删除)

    2021-05-15 16:25:58
  • Scrapy 配置动态代理IP的实现

    2023-12-10 19:06:22
  • 以tensorflow库为例讲解Pycharm中如何更新第三方库

    2022-10-18 09:53:27
  • 利用Python编写个冷笑话生成器

    2021-05-10 15:13:20
  • Python实现获取汉字偏旁部首的方法示例【测试可用】

    2022-10-26 16:42:16
  • 用Python编写简单的定时器的方法

    2022-03-15 07:20:32
  • python从ftp获取文件并下载到本地

    2021-06-28 17:08:31
  • Python中的套接字编程是什么?

    2021-02-28 12:46:01
  • python超详细实现完整学生成绩管理系统

    2022-08-25 08:59:08
  • jQuery性能优化指南[译]

    2009-05-12 11:54:00
  • Python对XML文件实现增删改查操作

    2023-11-19 20:42:03
  • 从外到内提高SQL Server数据库性能

    2009-01-22 14:12:00
  • 约瑟夫问题的Python和C++求解方法

    2023-12-05 15:09:28
  • python做图片搜索引擎并保存到本地详情

    2021-08-27 01:42:33
  • python获取文件路径、文件名、后缀名的实例

    2022-05-05 10:47:27
  • 使用Python制作自动推送微信消息提醒的备忘录功能

    2023-02-26 18:19:40
  • 如何使用python爬取知乎热榜Top50数据

    2021-11-13 05:47:09
  • asp之家 网络编程 m.aspxhome.com