問題場景
之後的項目需要爬蟲抓取一些資訊,找個例子練練手,特此記錄。
環境介紹
Windows
Python2.7
IDEA15
通用抓取流程
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsICdzFWRoRXdvN1LclHdpZXYyd2LcBzNvwVZ2x2bzNXak9CX90TQNNkRrFlQKBTSvwFbslmZvwFMwQzLcVmepNHdu9mZvwFVywUNMZTY18CX052bm9CX90zdhpWOHJma5YkW1ZkMjZXUYpVd1kmYr50MZV3YyI2cKJDT29GRjBjUIF2LcRHelR3LcJzLctmch1mclRXY39TN2gDM0cjM4ETNykDM3EDMy8CX0Vmbu4GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.jpg)
本文思路
1、給爬蟲一個目标即網頁位址及參數
2、設定一些必要的參數
3、抓取網頁源代碼
4、提取資料
5、儲存資料(本文是儲存在檔案裡,多數是存在資料庫裡)
目标
CODE
#!/usr/bin/env python
# -*- coding: UTF-8 -*-
import urllib2
import re
import os
class Spider:
# 構造方法
def __init__(self, url, headers):
self.url = url
self.headers = headers
def spider(self, page, pattern):
# 一共13頁
for i in range(, page):
# 抓取過程
# 1、通路其中一個網頁,抓取源代碼
try:
request = urllib2.Request(url=self.url % str(i), headers=self.headers)
response = urllib2.urlopen(request)
content = response.read()
except urllib2.HTTPError as e:
print e
exit()
except urllib2.URLError as e:
print e
exit()
# 2、提取你的資料
regex = re.compile(pattern, re.S)
items = re.findall(regex, content)
# 3、儲存資料
path = 'qiubai'
if not os.path.exists(path):
os.makedirs(path)
file_path = path + "/qiubai" + str(i) + ".txt"
file = open(file_path, 'w')
for item in items:
# 把\n去掉,<br/>換成\n
item = item.replace('\n', '').replace('<br/>', '\n')
item += "\n\n"
file.write(item)
file.close()
if __name__ == '__main__':
url = 'https://www.qiushibaike.com/text/page/%s/'
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.110 Safari/537.36'}
# 結合你的網頁寫表達式
pattern = '<div class="content">.*?<span>(.*?)</span>.*?</div>'
s = Spider(url, headers)
s.spider(, pattern)
結果截圖
結果檔案夾
結果檔案