1. 程式人生 > >Python爬蟲入門——2. 1 我的第一個爬蟲程式

Python爬蟲入門——2. 1 我的第一個爬蟲程式

         第一個爬蟲程式就寫的簡單一點,我們用requests庫以及BeautifulSoup庫來完成我們的第一個程式(我們所用的python版本為  3.x)。我們爬取豆瓣圖書(https://book.douban.com/top250?start=25)Top1-25的書名

#匯入requests庫
import requests
#匯入BeautSoup庫
from bs4 import BeautifulSoup
#定義請求頭,請求頭可以使爬蟲偽裝成瀏覽器
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.77 Safari/537.36'}
#利用requests模組連線網路,它可以開啟並讀取從網路獲取的物件
html = requests.get("https://book.douban.com/top250?start=0",headers=headers)
#BeautifulSoup通過定位HTML標籤來格式化和組織複雜的網路資訊
soup = BeautifulSoup(html.text,'lxml')
i = 0
#我們需要的是網頁裡面其中一部分內容,所以我們會利用select來查詢我們需要的內容
name_list = soup.select('tr > td > div.pl2 > a')
for name in name_list:
    i+=1
    print(i,name.get_text().strip())

我們來分析一下這個程式:

2.利用requests.get連線網路並獲取目標網路

3.利用BeautifulSoup格式化網路內容

4.利用select來查詢我們需要的內容

這個頁面可以在你需要的內容下,右鍵—>檢查。來獲得

在圖中我們可以看到,書名是在  td >  div.p2 > a 的範圍內的。類似於中國 > 江西 > 南昌。可以通過選中   小王子、右鍵、點選Copy ——>Copy selector 獲得,注意的是,我麼獲得的原始字串為#content > div > div.article > div > table:nth-child(6) > tbody > tr > td:nth-child(2) > div.pl2 > a  不過tr之前的需要刪除,並且 td:nth-child(2)需要變成   td  這是因為 td:nth-child(2)指的是第二個書名,而我們需要的是1-25,所以需要將其去除。

5.我們獲得的是一個列表,所以需要用  for   迴圈將所有書名打印出來, i 記錄的是書的序號,其中strip()用來去除字串兩端的空格,否則我們打印出來的內容空格太多。