1. 程式人生 > >《Python網路爬蟲 從入門到實踐》-筆記

《Python網路爬蟲 從入門到實踐》-筆記

第一章 入門

1.python爬蟲的流程

1獲取網頁 2 解析網頁(提取資料)3 儲存資料

技術實現:

  1. 獲取網頁:基礎: request,urllib,selenium(模擬瀏覽器)。                                                                                                                         進階:多程序多執行緒抓取、登陸抓取、突破IP封禁和伺服器抓取
  2. 解析網頁:基礎:re正則表示式,BeautifulSoup和lxml                                                                                                                                 進階:解決中文亂碼
  3. 儲存資料:基礎:存入txt檔案和存入csv檔案                                                                                                                                                 進階:存入MySQL資料庫和 MongolianDB資料庫

 

第二章 python 入門以及簡單爬蟲

入門知識點:

  • 列表  list
  • 字典  key value
namebook={"Name:":"Alex","Age":7,"Class":"First"}
for key,value in namebook.items():
    print(key,value)
  •  __init__()方法為類的構造方法    注意:有兩個下劃線 _ _

 

簡單爬蟲

一:獲取頁面

 

#!/usr/bin/python
#coding:UTF-8

import requests
link="http://www.santostang.com/"
headers={'User-Agent':'Mozilla/5.0(Windows;U;Windows NT 6.1;en-US;rv:1.9.1.6) Geocko/20091201 Firefox/3.5.6'}
r=requests.get(link,headers=headers)
print(r.text)

上述程式碼獲取了部落格首頁的HTML程式碼

首先 import requests,使用requests.get(link,headers=headers)獲取網頁

用requests的header偽裝成瀏覽器訪問

r是requests的Response回覆物件

r.text是獲取的網頁內容程式碼

二:提取需要的資料

#!/usr/bin/python
#coding:UTF-8

import requests
from bs4 import BeautifulSoup#從bs4這個庫中匯入BeautifulSoup


link="http://www.santostang.com/"
headers={'User-Agent':'Mozilla/5.0(Windows;U;Windows NT 6.1;en-US;rv:1.9.1.6) Geocko/20091201 Firefox/3.5.6'}
r=requests.get(link,headers=headers)

soup=BeautifulSoup(r.text,"lxml")#使用BeautifulSoup解析這段程式碼
title=soup.find("h1",class_="post-title").a.text.strip()
print(title)

獲取HTML程式碼後,需要從整個網頁中提取第一篇文章的標題

用BeautifulSoup這個庫對爬取下來的頁面進行解析

先匯入庫,然後將HTML程式碼轉化為soup物件

用soup.find("h1",class_="post-title").a.text.strip()獲取標題

 

三:儲存資料

#!/usr/bin/python
#coding:UTF-8

import requests
from bs4 import BeautifulSoup#從bs4這個庫中匯入BeautifulSoup


link="http://www.santostang.com/"
headers={'User-Agent':'Mozilla/5.0(Windows;U;Windows NT 6.1;en-US;rv:1.9.1.6) Geocko/20091201 Firefox/3.5.6'}
r=requests.get(link,headers=headers)

soup=BeautifulSoup(r.text,"lxml")#使用BeautifulSoup解析這段程式碼
title=soup.find("h1",class_="post-title").a.text.strip()
print(title)

with open('title.txt',"a+")as f:
    f.write(title)
    f.close