Python爬蟲入門——2. 1 我的第一個爬蟲程式
阿新 • • 發佈:2019-01-26
第一個爬蟲程式就寫的簡單一點,我們用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()用來去除字串兩端的空格,否則我們打印出來的內容空格太多。