scrapt中的資料提取,採用js2xml庫
阿新 • • 發佈:2018-11-08
這個一個爬去美團的例子,應為資料都是在script中,小心封ip,儘量少執行。
先匯入庫幾個庫
import requests from bs4 import BeautifulSoup from lxml import etree import js2xml
傳送請求,獲取到script裡面的資料
url = "https://sz.meituan.com/meishi/" headers = {} response = requests.get(url, headers = headers) content = response.text bs = BeautifulSoup(content, "lxml") l = bs.select("body script")[13].string #獲取到body中第十三個script裡面的資料
然後在利用js2xml方法格式化之後再利用xpath來提取資料
src_text = js2xml.parse(l, encoding='utf-8', debug=False) print(type(src_text)) src_tree = js2xml.pretty_print(src_text) print(src_tree) selector = etree.HTML(src_tree) content = selector.xpath('//property[@name="poiId"]/number/@value') name = selector.xpath('//property[@name="title"]/string/text()')
就ok了