requests+beautifulsoup爬取豆瓣圖書

使用Xpath和BeautifulSoup來解析網頁能夠說真的很簡便。程序員

import requests
from bs4 import BeautifulSoup
from random import choice

url = 'https://book.douban.com/tag/%E7%BC%96%E7%A8%8B'
ua = "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 Safari/537.36"
headers = {'User-Agent': ua}

with open('hosts') as f:
    proxies = [proxy.strip() for proxy in f.readlines()]

    with requests.get(url=url, headers=headers, proxies={"http": choice(proxies)}) as resp:
        soup = BeautifulSoup(markup=resp.text, features='lxml')
        # //li[@class="subject-item"]//h2/a/text()
        # //li[@class="subject-item"]//span[@class="rating_nums"]/text()
        books = soup.select('.subject-item')
        # print(books)

        for book in books:
            # print(book.select('h2 a'))
            title = ''.join(map(lambda x: x.strip(), book.select('h2 a')[0].text))  # 合併副標題
            rate = book.select('.rating_nums')[0].text
            print(title, rate)

解析結果:算法

計算機程序的構造和解釋:原書第2版 9.5
編碼:隱匿在計算機軟硬件背後的語言 9.2
代碼大全(第2版) 9.3
深刻理解計算機系統 9.5
C程序設計語言:第2版·新版 9.4
算法導論(原書第2版) 9.3
算法(第4版) 9.4
JavaScript高級程序設計(第3版) 9.3
黑客與畫家:硅谷創業之父PaulGraham文集 8.8
集體智慧編程 9.0
編程珠璣:第2版 9.1
Java編程思想(第4版) 9.1
Python編程:從入門到實踐:從入門到實踐 9.1
C++Primer中文版(第4版) 9.2
流暢的Python 9.5
程序員的自我修養:連接、裝載與庫 8.8
UNIX環境高級編程:第2版 9.4
Python編程快速上手:讓繁瑣工做自動化 9.0
程序員修煉之道:從小工到專家 8.6
重構:改善既有代碼的設計 9.0
相關文章
相關標籤/搜索