管理待抓取的url集合和已抓取的url,防止重複抓取,防止死迴圈
功能列表
實現方式1:判斷新新增url是否在容器中
2:向管理器新增新url
3:判斷容器是否為空
4:將已爬取url移動到已爬取集合
5:獲取待爬取url
功能列表1:使用set(自動去除重複專案)
2:使用關聯式資料庫(mysql)
3:使用快取資料庫(redis):大型公司使用這玩意
實現方法1:get
2:post
3:偽裝頭資訊
7:httpredirecthandler
此處使用request實現1:urllib2
2:urllib3
3:requests
#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...