xpath+mongodb抓取伯樂在線實戰

使用lxml庫的xpath語法抓取伯樂在線的python爬虫部分文章,將數據存儲到mongodb。本文主要練習xpath語法的使用和存儲mongodb資料庫的方式。

關於xpath的使用可以參考這篇文章xpath全面總結

import requests # 導入網頁請求庫from lxml import etree # 導入網頁解析庫from pymongo import MongoClientdef start_requests(url): r = requests.get(url) return r.contentdef parse(text): html = etree.HTML(text) divs = html.xpath(//div[@id="archive"]//div[@class="post-meta"]) for div in divs: # 一個中間變數 comment = div.xpath(./p/a[3]/text()) # 使用生成器返回字典 yield { title: div.xpath(./p/a[1]/text())[0], url: div.xpath(./p/a[1]/@href)[0], time: div.xpath(./p//text())[2].strip(·
), type:div.xpath(./p/a[2]/text())[0], typeurl:div.xpath(./p/a[2]/@href)[0], comment:comment[0] if comment else None, excerpt: div.xpath(./span[@class="excerpt"]/p/text())[0] }def get_all(): # 抓取所有頁面,返回包含所有信息的生成器 for i in range(1, 6): # 循環抓取所有頁 url = http://python.jobbole.com/tag/%E7%88%AC%E8%99%AB/page/{}/.format(i) text = start_requests(url) yield from parse(text)def main(): client = MongoClient() # 連接資料庫 db = client.bole # 創建名為bole的資料庫 boledb = db.bole # 在bole資料庫中創建表 for item in get_all(): boledb.insert_one(item) # 插入文檔 client.close() # 斷開連接if __name__ == __main__: main()

存到資料庫的結果如下

閱讀上面代碼需要下面的基礎知識

1.爬蟲基本原理

2.mongodb的安裝和使用,看這兩篇文章

  • mongodb安裝配置及介紹
  • python連接mongodb

3.xpath語法

xpath全面總結

4.在爬蟲中使用生成器

爬蟲代碼改進(三)

專欄信息

專欄主頁:python編程

專欄目錄:目錄

爬蟲目錄:爬蟲系列目錄

版本說明:軟體及包版本說明

推薦閱讀:

爬蟲的矛與盾
編程小白如何寫爬蟲程序
利用python處理PDF文本
通過python進行單網頁內圖片爬取及下載

TAG:Python庫 | python爬蟲 | 網頁爬蟲 |