python爬取豆瓣圖書
最近突然想學下爬蟲爬取一下豆瓣的圖書,按類別來爬取並分別儲存,然後就用正則寫了一份初級爬蟲,目前只是分類的頁面爬取,後面完善一下,希望能夠得到每本書的isbn編號,生成自己的資料庫。
# -*- coding:utf-8 -*- import urllib2 import re import sys tags = [u'小說', u'散文', u'歷史', u'愛情', u'管理', u'程式設計', u'生活', u'心理'] haveBooked = set() class BookSpider: def __init__(self): reload(sys) sys.setdefaultencoding('utf-8') self.start = 0 self.tagIndex = 0 self.param = '&filter=&type=' self.headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64)'} self.filePath = 'DoubanTop250.txt' def GetPage(self): try: URL = 'https://book.douban.com/tag/' + tags[self.tagIndex] request = urllib2.Request(url=URL, headers=self.headers) response = urllib2.urlopen(request) page = response.read().decode('utf-8') self.start += 20 pageNum = self.start / 20 print '正在抓取 ' + tags[self.tagIndex] + ' 的第' + str(pageNum) + '頁資料' return page except urllib2.URLError, e: if hasattr(e, 'reason'): print '抓取失敗,具體原因:', e.reason def WriteBookTitle(self, titleInfo, fileBook): patternTitle = re.compile(u'(.*?)<span.*?>(.*?)</span>.*?', re.S) result = re.match(patternTitle, titleInfo) if result is None: fileBook.write('title: ' + titleInfo + '\r\n') else: titles = re.findall(patternTitle, titleInfo) fileBook.write('title: ' + titles[0][0].strip() + titles[0][1].strip() + '\r\n') def WriteBookPubInfo(self, pubInfo, fileBook): pubInfo += '!' patternPub1 = re.compile(u'(.*?)/(.*?)/(.*?)/(.*?)/(.*?)!', re.S) patternPub2 = re.compile(u'(.*?)/(.*?)/(.*?)/(.*?)!', re.S) result = re.match(patternPub1, pubInfo) if result is None: pubs = re.findall(patternPub2, pubInfo) fileBook.write('author: ' + pubs[0][0].strip() + '\r\n') fileBook.write('pubHouse: ' + pubs[0][1].strip() + '\r\n') fileBook.write('pubData: ' + pubs[0][2].strip() + '\r\n') fileBook.write('price: ' + pubs[0][3].strip() + '\r\n\r\n') else: pubs = re.findall(patternPub1, pubInfo) fileBook.write('author: ' + pubs[0][0].strip() + '\r\n') fileBook.write('translator: ' + pubs[0][1].strip() + '\r\n') fileBook.write('pubHouse: ' + pubs[0][2].strip() + '\r\n') fileBook.write('pubData: ' + pubs[0][3].strip() + '\r\n') fileBook.write('price: ' + pubs[0][4].strip() + '\r\n\r\n') def GetBook(self): pattern = re.compile(u'<li.*?class="subject-item">.*?<div.*?class="info">.*?' + u'<h2.*?class="">.*?<a.*?subject_id:\'(.*?)\'.*?>(.*?)</a>.*?<div.*?class="pub">' + u'(.*?)</div>', re.S) try: while self.tagIndex < 2: fileName = "book" + tags[self.tagIndex] + ".txt" fileName.decode("utf-8").encode("gb2312") print fileName fileBook = open(fileName, 'w') while self.start < 1: page = self.GetPage() books = re.findall(pattern, page) for book in books: fileBook.write('subject_id: ' + book[0].strip() + '\r\n') self.WriteBookTitle(book[1].strip(), fileBook) self.WriteBookPubInfo(book[2].strip(), fileBook) self.start += 1 fileBook.close() self.start = 0 self.tagIndex += 1 except: print '抓取 ' + tags[self.tagIndex] + ' 第 ' + self.start / 20 + 1 + ' 頁失敗' def main(self): print '開始抓取圖書資料' self.GetBook() print '抓取完畢...' DoubanSpoder = BookSpider() DoubanSpoder.main()
相關推薦
教你用Python爬取豆瓣圖書Top250
質量、速度、廉價,選擇其中兩個 這篇文章將會用到上一篇文章所講的內容,如果沒有看過可以去看一下教你用Python寫excel 今天我們要做的就是用Python爬取豆瓣圖書Top250,先開啟網站看一下 今天不談這豆瓣圖書top250垃圾不垃圾的問題,只看看怎麼用p
python爬取豆瓣圖書
最近突然想學下爬蟲爬取一下豆瓣的圖書,按類別來爬取並分別儲存,然後就用正則寫了一份初級爬蟲,目前只是分類的頁面爬取,後面完善一下,希望能夠得到每本書的isbn編號,生成自己的資料庫。 # -*- coding:utf-8 -*- import urllib2 import
Python爬取豆瓣TOP250圖書排行榜
# -*- coding: utf-8 -*- import bs4 import requests def open_url(url): # url = 'https://movie.douban.com/top250' hd = {}
python正則表示式爬取豆瓣圖書資訊
import requests import re content = requests.get('https://book.douban.com/').text pattern = re.compile('<li.*?cover.*?href="(.*?)".*?ti
python 爬蟲實戰(一)爬取豆瓣圖書top250
import requests from lxml import etree with open('booktop250.txt','w',encoding='utf-8') as f: f
python爬取豆瓣小組700+話題加回復啦啦啦python open file with a variable name
技術分享 ash 寫入 blog ima ron tar 回復 -128 需求:爬取豆瓣小組所有話題(話題title,內容,作者,發布時間),及回復(最佳回復,普通回復,回復_回復,翻頁回復,0回復) 解決:1. 先爬取小組下,所有的主題鏈接,通過定位nextp
python爬取豆瓣250存入mongodb全紀錄
xpath author cli content call function 取出 pycha 出版社 用了一周的時間總算搞定了,跨過了各種坑,總算調試成功了,記錄如下: 1、首先在cmd中用命令行建立douban爬蟲項目 scrapy startproject douba
爬蟲-爬取豆瓣圖書TOP250
info spa data inf code pla select lac lec import requests from bs4 import BeautifulSoup def get_book(url): wb_data = requests.get(u
python 爬取豆瓣電影案例
數據 odin span content html temp com str self # conding=utf-8 from parse import parse_url import json class DoubanSpider: def __init
用Requests和正則表示式爬取豆瓣圖書TOP250
思路和上文大同小異。 import requests from requests.exceptions import RequestException import re import json headers = {'User-Agent':'Mozilla/5.0(Macinto
python3爬取豆瓣圖書Top250圖片
本部落格只爬取豆瓣圖書Top250的圖片,各位愛書的小夥伴趕緊學起來,爬完的效果圖如下: 我這段程式碼的目錄結構如下: 程式碼在此: # -*- coding:utf-8 -*- import requests from lxml import etree def spid
爬蟲之爬取豆瓣圖書的評論
pen 數據 app bs4 lis 爬取 fix replace sub from urllib import request from bs4 import BeautifulSoup as bs #爬取豆瓣最受關註圖書榜 resp = request.urlope
爬蟲之爬取豆瓣圖書名字及ID
for gettext char small print html_ 圖書 res span from urllib import request from bs4 import BeautifulSoup as bs #爬取豆瓣最受關註圖書榜 resp = reque
詳解使用Python爬取豆瓣短評並繪製詞雲
使用Python爬取豆瓣短評並繪製詞雲 成果如下(比較醜,湊合看) 1.分析網頁 開啟想要爬取的電影,比如《找到你》,其短評如下: 檢視原始碼 發現短評存放在<span>標籤裡 並且class為short,所以通過爬取其裡邊的內容即可
python爬取豆瓣電影Top250的資訊
python爬取豆瓣電影Top250的資訊 2018年07月25日 20:03:14 呢喃無音 閱讀數:50 python爬取豆瓣電影Top250的資訊。 初學,所以程式碼的不夠美觀和精煉。 如果程式碼有錯,請各位讀者在評論區評論,以免誤導其他同學。 (
Python3 爬取豆瓣圖書Top250並存入Excel中
#coding=utf-8 import re import xlwt import requests from bs4 import BeautifulSoup def getHtml(url): headers = {'User-Agent': 'Mo
python 爬取 豆瓣網 搜尋結果 同城活動 資料
主要使用的庫: requests:爬蟲請求並獲取原始碼 re:使用正則表示式提取資料 json:使用JSON提取資料 pandas:使用pandans儲存資料 bs4:網頁程式碼解析 以下是原始碼: #!coding=utf-8 import requests
python爬取豆瓣影評
看的別人的程式碼 爬取某部影片的影評 沒有模擬登入只能爬6頁 # -*- encoding:utf-8 -*- import requests from bs4 import BeautifulSoup import re import random import io
Python 爬取 豆瓣
... import urllib.request import time from bs4 import BeautifulSoup def url_open(url): response = urllib.request.urlopen(url) return response
[轉載]Python爬取豆瓣影評並生成詞雲圖程式碼
# -*- coding:utf-8 -*- ''' 抓取豆瓣電影某部電影的評論 這裡以《我不是潘金蓮為例》 網址連結:https://movie.douban.com/subject/26630781/comments 為了抓取全部評論需要先進行登入 '''