python爬蟲學習筆記

2021-08-02 11:25:01 字數 1813 閱讀 7414

一、爬蟲思路:

對於一般的文章而言,思路如下

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 ...