有些你想爬取的页面数据并不在html里,而是由js动态加再出来,所以xpath不能提取出想要的数据,有些需要用到正则表达式,例如爬取丁香园疫情数据:
import requests import re import json reault=requests.get('https://ncov.dxy.cn/ncovh5/view/pneumonia?scene=2&clicktime=1579583352&enterid=1579583352&from=timeline&isappinstalled=0') url_text=reault.content.decode() url_result=re.search(r'window.getAreaStat = (.*?)}]}catch',url_text,re.S) texts=url_result.group() texts=texts.replace('window.getAreaStat = ','') texts=texts.replace('}catch','') c=json.loads(texts) print(c)