目錄收集建議
正規表示式的心法
參考資料
建議爬蟲初學者做完簡單**爬蟲的所有技能(requests+bs4)思考題。
正規表示式是你掌握簡單**爬蟲之後的高階技能,如果requests+bs4就可以滿足需求,為什麼自己要平添煩惱。
因為遇到了棘手的問題,不然誰會去學這麼難懂的正規表示式
今天爬取的**是:為知筆記吧首頁,爬取的內容是回覆數
stop!別點上面的文字,點選文字的時候,用簡單**爬蟲的所有技能(requests+bs4)提到的檢查元素工具看看文字背後的真實url,這是乙個非常好的上網習慣。檢查了之後,接著往下看。
看看網頁源**是不是真的包含了我們要的內容—回覆數
# -*- coding: utf-8 -*-
import requests
from bs4 import beautifulsoup
url = ""
web_data = requests.get(url, headers=headers)
# 新知識點 web_data.content
# 以位元組的方式訪問web_data,所以用'wb'模式寫入
網頁源**裡包含了回覆數,那麼我們來用css selector語法把內容提取出來吧。稍等,看看soup裡有沒有
# -*- coding: utf-8 -*-
import requests
from bs4 import beautifulsoup
url = ""
web_data = requests.get(url, headers=headers)
web_data.encoding = 'utf-8'
web_text = web_data.text
soup = beautifulsoup(web_text, 'lxml')
with open('soup_text.txt', 'w') as f:
f.write(str(soup)) # soup物件轉成字串
到此,我們要學正規表示式了!用正確的工具,做正確的事
# -*- coding: utf-8 -*-
import re
import requests
from bs4 import beautifulsoup
url = ""
web_data = requests.get(url, headers=headers)
web_data.encoding = 'utf-8'
web_text = web_data.text
reply_nums = re.findall(r'(?<="回覆">)[\s\s]*?(?=)', web_text)
文章不涉及招式的講解,需要自學正規表示式基礎內容如零寬斷言、懶惰模式、貪婪模式等
最容易理解的乙個想法,也就是re.search()的用法: 掃瞄整個字串並返回第乙個成功的匹配
爬取帖子的建立時間,觀察網頁結構,寫出匹配時間的正則
# -*- coding: utf-8 -*-
import re
import requests
url = ""
web_data = requests.get(url, headers=headers)
web_data.encoding = 'utf-8'
source_code = web_data.text
## 匹配時間的正則
time_pattern = r'\d-\d-\d\s\d:\d'
# 匹配第乙個時間
create_time = re.search(time_pattern, source_code).group()
print(create_time)
反覆聚焦匹配帖子建立者的使用者名稱,可以先想一想怎麼匹配,再讀源**
如果你對網頁結構敏感性越高,那麼寫出的正則適用性越大,通過檢查元素,發現使用者名稱存在於一段html**中,這段**有乙個class,class="d_name",d_name有什麼含義?嘿嘿嘿
suoai1335
# -*- coding: utf-8 -*-
import re
import requests
url = ""
web_data = requests.get(url, headers=headers)
web_data.encoding = 'utf-8'
source_code = web_data.text
# 匹配包含使用者名稱正規表示式
include_username_pattern = r'(?<=)'
# 匹配出來包含使用者名稱的html**
include_username = re.search(include_username_pattern, source_code).group()
# 匹配使用者名稱的正規表示式
username_pattern = r'(?<=target="_blank">)[\s\s]*'
# first time
username = re.search(username_pattern, include_username).group()
print(username)
下面用動畫來演示一下,一般我們容易掉進乙個誤區裡,認為要匹配什麼,就只寫匹配內容的正規表示式,可是呢?這個正規表示式又很難寫,寫完了又不是很通用,這個時候可以考慮換一種思路,發散一下思維,寫乙個正規表示式來匹配更多的內容,然後針對這一內容,再寫乙個正規表示式,最終取得自己想要的內容。
正規表示式30分鐘入門教程
感謝閱讀,看張輕鬆一下
**動手,你才能學會程式設計
分享,你才能學得透徹
**
爬蟲 正規表示式
正規表示式 regular expression 是一種字串匹配的模式 pattern 它可以檢查乙個字串是否含有某種子串 替換匹配的子串 提取某個字串中匹配的子串。匯入正則模組 importre 字元匹配 rs re.findall abc adc print rs rs re.findall a...
python爬蟲 正規表示式
正規表示式是十分高效而優美的匹配字串工具,一定要好好掌握。利用正規表示式可以輕易地從返回的頁面中提取出我們想要的內容。1 貪婪模式與非貪婪模式 python預設是貪婪模式。貪婪模式,總是嘗試匹配盡可能多的字元 非貪婪模式,總是嘗試盡可能少的字元。一般採用非貪婪模式來提取。2 反斜槓問題 正規表示式裡...
Python爬蟲 正規表示式
一般的正規表示式都可直接到正則生成工具處生成,常見匹配字元 re.match及其常規匹配 re.match 嘗試從字串的起始位置匹配乙個模式,如果不是起始位置匹配成功的話,match 就返回none。re.match pattern,string,flags 0 返回的為乙個物件,其中span代表長...