欧美三区_成人在线免费观看视频_欧美极品少妇xxxxⅹ免费视频_a级毛片免费播放_鲁一鲁中文字幕久久_亚洲一级特黄

python爬蟲爬取全站url,完美小demo(可防止鏈接到外網等各種強大篩選)

系統 1851 0

上次完成的url爬取項目并不能滿足需求,在此完成了一個更為強大的爬取代碼,有需要的可以直接運行,根據自己爬取的網站更改部分正則和形參即可。前排提示:運行需要耐心,因為幾千個url爬完的話,還是建議花生瓜子可樂電影準備好。

下面是代碼,代碼有注釋,很容易理解。

注意:爬蟲代碼每過一段時間就 需要更新,因為爬的東西在變,所以可能過一段時間就要更新爬蟲。

            
              # -*- coding: utf-8 -*-
"""
Created on Wed Sep 29 14:01:28 2018

@author: ESionJL數據貓

question:1.當前url若爬取到的pagelinks為[],則將其移除visited列表。
         2.spiderpage()函數中,當前url爬取到的網頁為UNknown,會報錯,如何規避,并將此url移除。
         3.返回title為空
         4.網站不可加載
         5.過期網站,垃圾網站

"""

import re
import requests
from bs4 import BeautifulSoup
from urllib import request
from urllib import error


#此測試首頁是否可以鏈接
def url_get(num_retries=5):
#    url = input("請輸入要爬取的首頁url:")
    url = "http://"
#    url = "http://"
    try:
        # 做一個user-agent模擬瀏覽器發送請求,也可以加入其它字段
        kv = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:61.0) Gecko'}
        requests.get(url, headers=kv)
        return url
    except error.URLError or error.HTTPError as e:
        if num_retries > 0:
            if hasattr(e,'code') and 500 <= e.code < 600:
                url_get(num_retries-1)
        print("url無法連接")


#此函數用于提取各鏈接網站下的所有鏈接
def spiderpage(url):
    try:
        kv = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) Chrome/57.0.2987.98 Safari/537.36 LBBROWSER'}
        r = requests.get(url, headers=kv)
        r.encoding = r.apparent_encoding
        pagetext = r.text
        # 正則表達式表示要爬取的是
              
                 1:
                print(f"第{x-1}個url,開始爬")
            visitedurl = self.linkQuence.unvisitedurldequence()  # 從未訪問列表中pop出一個url
            if visitedurl is None or visitedurl == '':
                continue
            title = getTitle(visitedurl)
            if re.findall("新華保險",title):  #如果跳出本站則pass              
                initial_links = spiderpage(visitedurl)  # 爬出該url頁面中所有的鏈接
                right_links = url_filtrate(initial_links)  # 篩選出合格的鏈接
                if not right_links:
                    pass
                else:             
                    self.linkQuence.addvisitedurl(visitedurl)  # 將該url放到訪問過的url隊列中
                    for link in right_links:  # 將篩選出的鏈接放到未訪問隊列中
                        self.linkQuence.addunvisitedurl(link)
                    x += 1
            else:
                pass
        print(f"爬完了")
        return self.linkQuence.visited

#寫文件函數
def writetofile(urllist):
    #寫入網站并計數
    x=1
    for url in urllist:
        # Furls.txt用于保存鏈接
        file = open('Furls.txt', 'a', encoding='utf8')
        file.write(f'{url}\n')
        x += 1
    file.close()
    print(f'寫入已完成,總計{x-1}個網頁的子鏈接')

#主循環
if __name__ == '__main__':
    url = url_get()
    spider = Spider(url)
    #傳入要爬取的子鏈接數量
    urllist = spider.crawler(5000)
    writetofile(urllist)
              
            
          

還是希望大家自己學會比較好,只是粘貼畢竟學不到東西,這個主題框架不是我寫的,但是真正的實現函數都是我自己一點一點寫的,遇到很多困難也都解決了,能學到不少東西。


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 国产成人a亚洲精品 | 一区二区三区在线 | 欧美系列第一页 | 亚洲成人在线免费视频 | av天天干| 久久久在线视频 | 久久只有这里有精品 | 国产传媒视频 | 91精品最新国内在线播放 | 久草大 | 无人精品乱码一区二区三区 | avbobo在线| 麻豆自拍偷拍 | 国产你懂得 | 看了让人下面流水的视频 | 亚洲成人观看 | 欧美日韩成人 | 国产欧美精品午夜在线播放 | 一区二区三区欧美在线观看 | 日韩成人精品在线 | 99精品99 | 精品久久久久一区二区三区 | 久久精品免费观看 | 国产精品爽爽va在线观看网站 | 91免费公开视频 | www久久久久| 一区二区三区成人A片在线观看 | 国产精品毛片久久久久久 | 福利入口在线观看 | 亚洲激情第二页 | 一级做a | 亚洲精品中文字幕在线观看 | 国产精品久久久爽爽爽麻豆色哟哟 | 亚洲精品久久婷婷丁香51 | 青青久视频 | 色网站在线免费观看 | 国产精品伊人 | 玖玖精品 | 日韩国产成人资源精品视频 | 日本精品一区二区三区四区 | 九色成人蝌蚪国产精品电影在线 |