正則表達式,獲取tr、td、div等后面的數據


比如,需要抓取鏈接“http://stockpage.10jqka.com.cn/000955/”下圖3個周期的漲幅數據

 

 這里我們先使用request請求獲得數據,然后通過正則re匹配數據

分析網頁結構數據,需要的數據存放在名稱為“even hot_cont”的class下

所以正則的寫法為:

1、先獲取class=even hot_cont下的所有數據

“tr_content = re.findall('<tr class="even hot_cont">(.*?)</tr', response, re.S)[0]”

2、再獲取td標簽頭的數據

“td_content = re.findall('<td.*?>(.*?)</td', tr_content, re.S)”

3、最后獲取需要的數據

print(td_content[1]),打印出來的結果“39.89%”
如此,我們抓取到了5日漲幅的數據,其他數據只需要修改“[]”的數字即可

 

注意:(.*?)是匹配任意字符的意思

 

全部代碼

import requests
import re

cookies = {
    'spversion': '20130314',
    'searchGuide': 'sg',
    'Hm_lvt_78c58f01938e4d85eaf619eae71b4ed1': '1580136391,1580289267,1580373821,1581036534',
    'Hm_lvt_22a3c65fd214b0d5fd3a923be29458c7': '1581036563,1581037991,1581040818,1581042432',
    'Hm_lpvt_78c58f01938e4d85eaf619eae71b4ed1': '1581042471',
    'Hm_lpvt_22a3c65fd214b0d5fd3a923be29458c7': '1581042471',
    'historystock': '002341%7C*%7C002179%7C*%7C002458%7C*%7C002223',
    'v': 'AqV2ZISrF5jZjHPExrLsDULrtGrI4llAo5Y9yKeKYVzrvsuWbzJpRDPmTPc0',
}

headers = {
    'Accept-Encoding': 'gzip, deflate',
    'Accept-Language': 'zh-CN,zh;q=0.9',
    'Upgrade-Insecure-Requests': '1',
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36',
    'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8',
    'Cache-Control': 'max-age=0',
    'Connection': 'keep-alive',
}

response = requests.get('http://stockpage.10jqka.com.cn/000955/', headers=headers, cookies=cookies).text

#正則取出數據
tr_content = re.findall('<tr class="even hot_cont">(.*?)</tr', response, re.S)[0]
print(tr_content)
td_content = re.findall('<td.*?>(.*?)</td', tr_content, re.S)
print(td_content)   
print(td_content[1])

執行結果

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM