欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

PyHacker編寫URL批量采集器

 更新時(shí)間:2022年05月14日 14:34:02   作者:巡安似海  
這篇文章主要為大家介紹了SpringBoot整合VUE?EasyExcel實(shí)現(xiàn)數(shù)據(jù)導(dǎo)入導(dǎo)出,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

喜歡用Python寫腳本的小伙伴可以跟著一起寫一寫呀。

編寫環(huán)境:Python2.x

00x1:需要用到的模塊

需要用到的模塊如下:

import requests
import re

本文將用re正則進(jìn)行講解,如果你用Xpath也可以

00x2:選取搜索引擎

首先我們要選取搜索引擎(其他搜索引擎原理相同)

以bing為例:Cn.bing.com

首先分析bing翻頁(yè)機(jī)制:

https://cn.bing.com/search?q=內(nèi)容&first=0 第一頁(yè)
https://cn.bing.com/search?q=內(nèi)容&first=10 第二頁(yè)
https://cn.bing.com/search?q=內(nèi)容&first=20 第三頁(yè)

頁(yè)數(shù) = First*10

分析完畢,我們來(lái)請(qǐng)求看一下

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,沒(méi)毛病

00x3:分析需要采集的url

分析需要采集的url在哪個(gè)位置

得出正則:(.*?)

正則表達(dá)式學(xué)習(xí):(百度搜:python 正則表達(dá)式)

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

就在我請(qǐng)求第二頁(yè)的時(shí)候發(fā)現(xiàn)了問(wèn)題

可以看到請(qǐng)求內(nèi)容和第一頁(yè)一樣,有某種驗(yàn)證機(jī)制

一般情況下驗(yàn)證機(jī)制,表示特定參數(shù)

經(jīng)過(guò)多次測(cè)試,發(fā)現(xiàn)缺少 Cookie: _EDGE_V=1;

請(qǐng)求正常,大致已經(jīng)完成

接下來(lái)只需要給關(guān)鍵詞和頁(yè)數(shù)變量就ok了

00x4:搜索

再搜索site:baidu.com 又出現(xiàn)了問(wèn)題

于是修改正則為:

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

有很多我們不想要的結(jié)果,我們?cè)賮?lái)遍歷下采集的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] 再進(jìn)行處理一下

可以看到下面還有重復(fù)的url,對(duì)url去重一下

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

00x5:自動(dòng)保存

接下來(lái)我們要讓他自動(dòng)保存到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():#去重復(fù)
    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批量采集器的詳細(xì)內(nèi)容,更多關(guān)于PyHacker批量采集URL的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • 解讀Python中字典的key都可以是什么

    解讀Python中字典的key都可以是什么

    這篇文章主要介紹了解讀Python中字典的key都可以是什么,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-09-09
  • 基于Python制作一個(gè)相冊(cè)播放器

    基于Python制作一個(gè)相冊(cè)播放器

    對(duì)于相冊(cè)播放器,大家應(yīng)該都不陌生(用于瀏覽多張圖片的一個(gè)應(yīng)用)。本文將利用Python編寫一個(gè)簡(jiǎn)單的相冊(cè)播放器,感興趣的可以學(xué)習(xí)一下
    2022-06-06
  • 詳解Pycharm出現(xiàn)out of memory的終極解決方法

    詳解Pycharm出現(xiàn)out of memory的終極解決方法

    這篇文章主要介紹了詳解Pycharm出現(xiàn)out of memory的終極解決方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-03-03
  • 使用Python設(shè)置tmpfs來(lái)加速項(xiàng)目的教程

    使用Python設(shè)置tmpfs來(lái)加速項(xiàng)目的教程

    這篇文章主要介紹了使用Python設(shè)置tmpfs來(lái)加速項(xiàng)目的教程,文中給出方法使用Python腳本將tmpfs保存于內(nèi)存中的程序存儲(chǔ)到本地硬盤上,需要的朋友可以參考下
    2015-04-04
  • Python中Collections模塊的Counter容器類使用教程

    Python中Collections模塊的Counter容器類使用教程

    Counter是Python標(biāo)準(zhǔn)庫(kù)提供的一個(gè)非常有用的容器,可以用來(lái)對(duì)序列中出現(xiàn)的各個(gè)元素進(jìn)行計(jì)數(shù),下面就來(lái)一起看一下Python中Collections模塊的Counter容器類使用教程
    2016-05-05
  • Python如何實(shí)用File文件的實(shí)現(xiàn)

    Python如何實(shí)用File文件的實(shí)現(xiàn)

    本文主要介紹了Python如何實(shí)用File文件的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-02-02
  • python腳本開(kāi)機(jī)自啟的實(shí)現(xiàn)方法

    python腳本開(kāi)機(jī)自啟的實(shí)現(xiàn)方法

    今天小編就為大家分享一篇python腳本開(kāi)機(jī)自啟的實(shí)現(xiàn)方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2019-06-06
  • Python編程使用*解包和itertools.product()求笛卡爾積的方法

    Python編程使用*解包和itertools.product()求笛卡爾積的方法

    這篇文章主要介紹了Python編程使用*解包和itertools.product()求笛卡爾積的方法,涉及Python列表轉(zhuǎn)換及itertools.product()求笛卡爾積相關(guān)操作技巧,需要的朋友可以參考下
    2017-12-12
  • Python實(shí)現(xiàn)二叉堆

    Python實(shí)現(xiàn)二叉堆

    二叉堆是一種特殊的堆,二叉堆是完全二元樹(shù)(二叉樹(shù))或者是近似完全二元樹(shù)(二叉樹(shù))。二叉堆有兩種:最大堆和最小堆。最大堆:父結(jié)點(diǎn)的鍵值總是大于或等于任何一個(gè)子節(jié)點(diǎn)的鍵值;最小堆:父結(jié)點(diǎn)的鍵值總是小于或等于任何一個(gè)子節(jié)點(diǎn)的鍵值。
    2016-02-02
  • python 兩個(gè)數(shù)據(jù)庫(kù)postgresql對(duì)比

    python 兩個(gè)數(shù)據(jù)庫(kù)postgresql對(duì)比

    這篇文章主要介紹了python 兩個(gè)數(shù)據(jù)庫(kù)postgresql對(duì)比,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-10-10

最新評(píng)論