一、爬蟲思路:
對於一般的文章而言,思路如下
1.通過主頁url獲取主頁原始碼,從主頁原始碼中獲得「標題」鏈結(如想要抓取知乎上的新聞,就獲得主頁上的新聞鏈結),2.繼續通過「標題」鏈結獲得「標題」原始碼,進而獲得「標題」中的內容。其中,當存在多頁時,先將每一頁都一樣的url寫下來,然後迴圈加入頁碼,具體事例如下(fanli_infoemation.py):
fanly_url=''
#主頁url 多頁
for i in range(start_page,end_page+1):#可自己定義起始頁碼和終止頁碼
rt=urllib2.request(fanly_url+str(i))#url完整化,多頁
3.接著獲取主頁原始碼,這裡有兩種方式:
(1)urllib2.urlopen(主頁url).read()
具體事例如下(zhihu_news.py):
request = urllib2.request(url,headers=header)
response = urllib2.urlopen(request)#開啟網頁
text=response.read()#獲取原始碼
return
text
(2)requests.get.content
具體事例如下(thread.py):
request=requests.get(url=url,headers=headers)#**請求
response=request.content#獲取原始碼
return response
4.在主頁原始碼(html)中匹配到「標題」鏈結(url),然後將標題的url作為引數繼續呼叫get_html(獲取主頁原始碼的方法)方法。其中匹配「標題」鏈結有幾種方式:
(1)正規表示式re:
具體事例如下(zhihu_news.py):
pattern = re.compile(')#編譯,提高效率
items=re.findall(pattern,html)
#print items#列印後是列表形式
urls=
foritem
initems:
#print urls
return urls
(2)beutifulsoup
具體事例如下(thread.py):
soup=beautifulsoup(html,'lxml')#解析網頁 bs4
all_a=soup.find_all('a',class
_='list-group-item')#找到a標籤
#print all_a
for i in
all_a:
img_html=get_html(i['href'])#獲取內頁鏈結中的原始碼
#print img_html
get_img(img_html)
(3)xpatn
具體事例如下(thread.py):
soup=lxml.etree.html(html)#初始化原始碼
items=soup.xpath('//div[@class="artile_des"]')#@是選取屬性的意思
foritem
initems:#一層層的解析網頁,直到拿到
imgurl_list=item.xpath('table/tbody/tr/td/a/img/@onerror')
5.在「標題」的html中匹配資訊,如正文資訊,標題資訊
6.列印這些資訊或者寫入檔案
Python爬蟲學習筆記
1.使用build opener 修改報頭 headers user agent 定義變數headers儲存user agent資訊 opener urllib.request.build opener 建立opener物件並賦給變數 openeropener.addheaders headers ...
python爬蟲學習筆記
2.網頁資訊提取 beautiful soup庫 這是 學習北理的嵩山天老師mooc教程的筆記,是老師上課用的例項。import requests url try kv 將爬蟲偽裝成瀏覽器 r requests.get url,headers kv r.raise for status print ...
Python 爬蟲 學習筆記
爬取搜狗首頁的頁面資料 import requests if name main 指定url url 發起請求 get方法會返回乙個響應物件 response requests.get url url 獲取響應資料,text返回的是字串形式的響應資料 page text response.text ...