使用python實現簡單爬蟲

2022-08-12 13:00:25 字數 2344 閱讀 5501

管理待抓取的url集合和已抓取的url,防止重複抓取,防止死迴圈

功能列表

1:判斷新新增url是否在容器中

2:向管理器新增新url

3:判斷容器是否為空

4:將已爬取url移動到已爬取集合

5:獲取待爬取url

實現方式
1:使用set(自動去除重複專案)

2:使用關聯式資料庫(mysql)

3:使用快取資料庫(redis):大型公司使用這玩意

功能列表
1:get 

2:post

3:偽裝頭資訊

7:httpredirecthandler

實現方法
1:urllib2

2:urllib3

3:requests

此處使用request實現

#coding=utf-8

import requests,json

url = ''

headers = #模擬mozilla瀏覽器頭,此行可以為空

get_data =

r = requests.get(url,headers=headers,params = get_data)

if r.status_code == 200:

'訪問成功'

print('檔案讀取錯誤:' + str(e))

file.write('\n得到資料如下:\n' + text)

print('得到資料長度:' + str(len(r.content)))

except ioerror as e:

print('檔案讀取錯誤:' + str(e))

else:

print('我是假的404')

1:正規表示式			傳統經典,語法奇葩難懂

2:html.parser python自帶

3:beautifulsoup 可以使用上下兩種解析器,集合天地精華

4:lxml 可以解析html和xml

#根據html網頁字串建立beautifulsoup物件

soup = beautifulsoup(

html_str, #html文件字串

'html.parser', #html解析器,可以使用py自帶的html_parser

from_encoding='utf-8' #文件編碼格式

) #soup.find(name,attrs,string) #只查詢第乙個匹配物件,支援正規表示式

nodes = soup.find_all('a')

for node in nodes:

print(node.name) #得到節點標籤(引數1)

print(node['href']) #得到屬性(引數2)

print(node.get_text()) #得到文字(引數3)

#正則匹配

nodes2 = soup.find_all('a',href=re.compile(r"map"))

print('\n\n\n\n\n---------------------------百年分割線------------------------\n')

for node in nodes2:

print(node.name) #得到節點標籤(引數1)

print(node['href']) #得到屬性(引數2)

print(node.get_text()) #得到文字(引數3)

使用python實現簡單爬蟲

近日學習了python語言,簡單實現了乙個爬蟲,爬取了慕課網課程簡介上的,並儲存到本地。以下是實驗 coding utf 8 spyder editor import re import os import urllib.request 在python3.6環境中實現 f soure urllib....

使用python實現簡單爬蟲

因為工作上對於資料的需要,所以這段時間一直在學習python和scrapy框架,下面貼上乙個簡單的python 爬蟲,可能 風格有點low,見諒。coding utf 8 import codecs import urllib import urllib2 import re import json...

Python實現簡單爬蟲

簡單爬蟲構架 時序圖 管理待抓取url集合和已抓取url集合 通過兩個列表 已抓取url列表,未抓取url的列表 防止重複抓取 防止迴圈抓取 request.add header user agent mozilla 5.0 偽裝成火狐瀏覽器 urllib2.install opener opene...