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編程
專欄目錄:目錄
爬蟲目錄:爬蟲系列目錄
版本說明:軟體及包版本說明
推薦閱讀: