對於一些簡單的爬蟲,python(基於python3)有更好的第三方庫來實現它,且容易上手。
Python標准庫–logging模塊
logging模塊能夠代替print函數的功能,將標准輸出到日志文件保存起來,利用loggin模塊可以部分替代debug
re模塊
正則表達式
sys模塊
系統相關模塊
sys.argv(返回一個列表,包含所有的命令行)
sys.exit(退出程序)
Python標准庫–urllib模塊
urllib.requset.urlioen可以打開HTTP(主要)、HTTPS、FTP、協議的URL
ca 身份驗證
data 以post方式提交URL時使用
url 提交網絡地址(全程 前端需協議名 后端需端口 http:/192.168.1.1:80)
timeout 超時時間設置
函數返回對象有三個額外的方法
geturl() 返回response的url信息 常用與url重定向
info()返回response的基本信息
getcode()返回response的狀態代碼
1,request
urllib.request最常見的用法是直接使用urllib.request.urlopen()來發起請求,但通常這樣是不規范的
一個完整的請求還應該包括headers這樣的信息傳遞,可以這樣實
通常防止爬蟲被檢測,我們需要規定headers,偽造爬蟲頭部信息,但此方法一般用途不大。
2,BeautifulSoup
beautifulsoup的功能很強大,利用它我們可以實現網頁的輕松解析,省掉寫很多正則表達式的麻煩。
它擁有幾個強大的解析庫,包括 內置的html解析器,lxml,html5lib。
一般默認的是html解析器 html.parser
最好的大概是lxml了
用法:
展現beautifulsoup強大的標簽選擇功能
獲取某個html標簽的屬性:
print(soup.p['name'])
獲取某個標簽的內容:
print(soup.p.string)
獲取某個標簽內的所有內容,存入列表中
plist=soup.p.contents
獲取某個標簽內的所有內容,存入列表中
plist=soup.p.contents
find_all()標簽選擇器
例如我們要找到id=content 的div標簽的內容
成功爬取