菜鸟python爬虫_Python爬虫学习-基础爬取
編譯環(huán)境:python v3.5.0, mac osx 10.11.4
第三方庫(kù):針對(duì)網(wǎng)頁(yè)解析,python有豐富的第三方庫(kù)如:
BeautifulSoup, urllib, requests etc.
可以通過import來引入指定第三方庫(kù),通過from lib import function導(dǎo)入第三方庫(kù)中的指定函數(shù)。如:
import requests, urllib.request, time, os from bs4 import BeautifulSoup # 導(dǎo)入需要用到的第三方庫(kù)
對(duì)網(wǎng)頁(yè)進(jìn)行解析:BeautifulSoup & url lib
url = 'https://www.ncbi.nlm.nih.gov/core/alerts/alerts.js_=1462105646975' wb_dt=requests.get(url) soup=BeautifulSoup(wb_dt.text,'lxml')
上述代碼可以解析指定url中的HTML, 通過requests中的get方式獲得。
wb_dt.text可以獲得HTML的純文本文件。
BeautifulSoup(wb_dt.text,'lxml')則能對(duì)傳入的純文本文件采用lxml庫(kù)進(jìn)行解析。
篩選需要的信息:soup.select('selector')
可以通過chrome瀏覽器中的檢查查詢指定元素的位置,復(fù)制selector到
soup.select('selector')
這一步驟主要是為了篩選所選元素特殊的位置,selector只要能指定到所需信息的位置即可。
動(dòng)態(tài)網(wǎng)頁(yè)解析
當(dāng)我們需要爬取動(dòng)態(tài)網(wǎng)頁(yè)大量頁(yè)面信息時(shí),我們可以從不斷response為HTML的headers中找尋規(guī)律。如圖所示,我們發(fā)現(xiàn)其連續(xù)加載其實(shí)是在返回時(shí)不斷通過request中url的改變生成。
實(shí)戰(zhàn)源代碼 1 爬取霉霉照片
其中導(dǎo)入的os模塊可以判斷目錄是否存在以及新建目錄。
os.makedir(path)與os.makedirs(path)的區(qū)別在于若父級(jí)目錄不存在,則os.makedir(path)會(huì)報(bào)錯(cuò),而os.makedirs(path)則會(huì)連同父級(jí)目錄一起創(chuàng)建
os.path.exists(path)則可以檢查目錄是否存在
總結(jié) 1
1、第三方庫(kù)可以良好的解析我們需要爬取的網(wǎng)頁(yè)
2、通過刷新發(fā)現(xiàn),觀察response可以發(fā)現(xiàn)request規(guī)律,從而抓取靜態(tài)網(wǎng)頁(yè)
3、針對(duì)具有反爬蟲的網(wǎng)頁(yè),可以利用time庫(kù)中的
time.sleep(seconds)來降低訪問頻率。加入header和proxies也可以防止針對(duì)ip的反爬取。
4、常用user agent https://blog.phpgao.com/user_agent_collection.html
實(shí)戰(zhàn)源代碼 2 爬取一頁(yè)商品數(shù)據(jù)(初識(shí)API)
**篩選出選定區(qū)域的字符串.strings **
去除字符串中的大片空格區(qū)域.stripped_strings
整體代碼
####總結(jié) 2
觀察推廣和轉(zhuǎn)轉(zhuǎn)href與正常商品信息之間的差別,可以通過
soup.select('a[href^="http://bj.58.com/"]')
發(fā)現(xiàn)返回值不對(duì)時(shí),值可能由js,node.js等生成
打印soup 搜索變量名再?gòu)膎etwork文件憑經(jīng)驗(yàn)中找尋
主要看response返回的值為文本的文件
確定目標(biāo)后看url和headers,遇到反爬將cookies等全部寫入headers中逐個(gè)嘗試,此次實(shí)踐,request中需要加referee
此次找尋流程:
從按前面提到的方法,網(wǎng)頁(yè)中檢查瀏覽量。
發(fā)現(xiàn)soup返回值不對(duì),查詢soup值發(fā)現(xiàn)所含值為0。
推測(cè)其值可能由js或者node.js控制,重新加載頁(yè)面查詢network中的js文件,查看返回值為文本的文件。
找到目標(biāo)文件后,查看其headers。
根據(jù)headers編譯探索request請(qǐng)求(針對(duì)反爬)
All source code can be downloaded at GitHub:
https://github.com/jacobkam/WebCrawlerLearning.git
總結(jié)
以上是生活随笔為你收集整理的菜鸟python爬虫_Python爬虫学习-基础爬取的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 组装台式计算机配置清单,diy之家 -
- 下一篇: python自动获取cookie_sel