mitmproxy抓取商標網查詢數據

先開啟mitmproxy, 命令如下

mitmweb -s 抓取.py

我們需要對request的url做過濾,發現請求的url包含有ajax字符就提取response內容,然后使用bs4解析xml,獲取需要的數據,代碼如下:

from mitmproxy import ctx

from bs4 import BeautifulSoup

import pandas as pd

from selenium import webdriver

# def request(flow):

#? ? flow.request.headers['user-agent'] = 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.100 Safari/537.36'

def run_selenium():

? ? driver = webdriver.PhantomJS()

? ? url = 'http://wsjs.saic.gov.cn/txnRead01.do?SVVVdE0o=KalIkqkedI6edI6edpSi_r6ZKYhRAJQahSFFMpYtTEaqqH0'

? ? driver.get(url)


def response(flow):

? ? ctx.log.error('獲取的url是: ' + flow.request.url)

? ? if 'txnRead02.ajax' in flow.request.url:

? ? ? ? soup = BeautifulSoup(flow.response.text, 'xml')

? ? ? ? for record in soup.find_all('record'):

? ? ? ? ? ? item = {}

? ? ? ? ? ? item['index'] = record.find('index').get_text()

? ? ? ? ? ? item['注冊號'] = record.find('sn').get_text()

? ? ? ? ? ? item['中文名稱'] = record.find('hnc').get_text()

? ? ? ? ? ? item['注冊時間'] = record.find('mno').get_text()

? ? ? ? ? ? item['英文名稱'] = record.find('hne').get_text()

? ? ? ? ? ? item['國際分類'] = record.find('nc').get_text()

? ? ? ? ? ? ctx.log.warn(str(item))

? ? ? ? ? ? df = pd.DataFrame(item, index = ['0'])

? ? ? ? ? ? header = True if item['index'] == 1 else False

? ? ? ? ? ? df.to_csv('/爬蟲例子/商標.csv', mode = 'a', encoding='utf_8_sig', index = False, header = header)

? ? ? ? # [ctx.log.warn(a.get('href')) for a in soup.find_all('a')]

if __name__ == "__main__":

? ? run_selenium()

在這里我并沒有使用selenium來自動調用網頁,后續會繼續對此進行改進的。

需要手動進行的操作就是翻頁,翻頁后,mitmproxy會自動獲取結果并且解析保存為csv的文件。

?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容