Python---爬虫案例
例1、爬取公眾號文章中的圖片。
1,首先打開要獲取公眾號文章的地址
 2,按下F12,再按Ctrl Shift C,然后鼠標移動到圖片位置,然后觀察控制臺中顯示圖片對應(yīng)的代碼位置
 3,分析該位置的代碼段
 
 代碼段如下:
 <img data-s="300,640" data-type="png" data-src="http://mmbiz.qpic.cn/mmbiz_png/xXrickrc6JTO9TThicnuGGR7DtzWtslaBl2kjpHsq1xSmicGGreQ5yUTK6W8JlX30aB50615I06bqib4Bk17F4nV8A/0?wx_fmt=png" style="width: 677px !important; height: auto !important; visibility: visible !important;" class data-ratio="0.5602272727272727" data-w="880" _width="677px" src="http://mmbiz.qpic.cn/mmbiz_png/xXrickrc6JTO9TThicnuGGR7DtzWtslaBl2kjpH…50615I06bqib4Bk17F4nV8A/640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=1&wx_co=1" crossorigin="anonymous" data-fail="0">
 這里我們觀察這個代碼段的格式:然后編寫正則表達式
pattern = ‘data-type=“png” data-src="(.+?)"’
? --- 匹配位于?之前的0個或1個字符 + --- 匹配位于+之前的字符或子模塊的1次或多次的出現(xiàn) . --- 匹配除換行符以外的任意單個字符 from re import findall from urllib.request import urlopenurl = 'https://mp.weixin.qq.com/s?__biz=MzI4MzM2MDgyMQ==&mid=2247486249&idx=1&sn=a37d079f541b194970428fb2fd7a1ed4&chksm=eb8aa073dcfd2965f2d48c5ae9341a7f8a1c2ae2c79a68c7d2476d8573c91e1de2e237c98534&scene=21#wechat_redirect' #這個為要爬取公眾號圖片的地址 with urlopen(url) as fp:content=fp.read().decode('utf-8')pattern = 'data-type="png" data-src="(.+?)"' #查找所有圖片鏈接地址 result = findall(pattern, content) #捕獲分組 #逐個讀取圖片數(shù)據(jù),并寫入本地文件 path='f:/test/'#把圖片存放到f盤下的test文件夾中 for index, item in enumerate(result):with urlopen(str(item)) as fp:with open(path+str(index)+'.png','wb') as fp1: fp1.write(fp.read())例2、使用scrapy框架編寫爬蟲程序。
首先安裝scrapy,打開cmd運行pip install scrapy
 若出錯:attrs() got an unexpected keyword argument ‘eq’
 則運行:pip3 install attrs==19.2.0 -i http://mirrors.aliyun.com/pypi/simple --trusted-host mirrors.aliyun.com即可
運行cmd開始創(chuàng)建項目,根據(jù)指定位置可以切換路徑
 創(chuàng)建一個項目:scrapy startproject sqsq為項目名可隨意
 cd sq
 
 
 出現(xiàn)這樣表示scrapy框架已經(jīng)搭建成功
例3、使用scrapy框架編寫爬蟲程序,爬取天涯小說。
這里以例2為基礎(chǔ)繼續(xù)
 scrapy genspider xiaoshuosq bbs.tianya.cn/post-16-1126849-1.shtml
 xiaoshuosq為爬蟲名稱
 bbs.tianya.cn/post-16-1126849-1.shtml為爬蟲起始位置,這里是天涯小說第一頁
 
 之后打開創(chuàng)建的xiaoshuosq爬蟲
 
 編寫如下代碼:
保存該爬蟲
 然后scrapy crwal xiaoshuosq這里的xiaoshuosq是你創(chuàng)建的爬蟲名稱
例4、使用requests庫爬取微信公眾號“Python小屋”文章“Python使用集合實現(xiàn)素數(shù)篩選法”中的所有超鏈接。
# -*- coding: utf-8 -*- """ Created on Mon Jun 1 21:40:19 2020@author: 78708 """#使用requests庫爬取微信公眾號“Python小屋”文章“Python使用集合實現(xiàn)素數(shù)篩選法”中的所有超鏈接 import requests import re url = 'https://mp.weixin.qq.com/s?__biz=MzI4MzM2MDgyMQ==&mid=2247486531&idx=1&sn=7eeb27a03e2ee8ab4152563bb110f248&chksm=eb8aa719dcfd2e0f7b1731cfd8aa74114d68facf1809d7cdb0601e3d3be8fb287cfc035002c6#rd' r = requests.get(url) print(r.status_code ) #響應(yīng)狀態(tài)碼 #print(r.text[:300] ) #查看網(wǎng)頁源代碼前300個字符 print('篩選法' in r.text ) print(r.encoding ) links = re.findall(r'<a .*?href="(.+?)"', r.text) #使用正則表達式查找所有超鏈接地址 for link in links:if link.startswith('http'):print(link)from bs4 import BeautifulSoup soup = BeautifulSoup(r.content, 'lxml') for link in soup.findAll('a'): #使用BeautifulSoup查找超鏈接地址href = link.get('href')if href.startswith('http'): #只輸出絕對地址print(href)例5、讀取并下載指定的URL的圖片文件。
# -*- coding: utf-8 -*- """ Created on Mon Jun 1 21:39:44 2020@author: 78708 """#讀取并下載指定的URL的圖片文件。import requests picUrl = r'https://www.python.org/static/opengraph-icon-200x200.png' r = requests.get(picUrl) print(r.status_code) with open('G:\TIM\圖片\wsq.png', 'wb') as fp:#G:\TIM\圖片\wsq.png 為保存路徑以及圖片名稱fp.write(r.content) #把圖像數(shù)據(jù)寫入本地文件總結(jié)
以上是生活随笔為你收集整理的Python---爬虫案例的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: 颐和园能带吃的进去吗
- 下一篇: “回风灭且起”下一句是什么
