如上图,点击Export to Excel 就会下载一个Exce文件,但是当我们查看元素时,,并没有excel的url。查看网络的文档时,也没有excel的url

这是我们清空网络的页面,重新点击页面的Export to Excel 按钮,就会出现三个响应文件 ,并下载了一个excel文件。逐个分析,

 

 

 

 如果我们不知道载荷第一个的长串怎么得到,可以复制,到主页面搜索。找到之后可以用xpath拿到。

 最终代码如下

import requests
from lxml import etree
import pandas as pd

request_url = 'https://www.accessdata.fda.gov/scripts/cdrh/cfdocs/cfpma/pss.cfm?s=t'
data_url = 'https://www.accessdata.fda.gov/scripts/cdrh/cfdocs/cfpma/pss_Excel.cfm'
headers = {
    'user-agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.60 Safari/537.36'
}


def get_cookies_id():
    r = requests.get(request_url)
    selector = etree.HTML(r.text)
    id = selector.xpath('//*[@id="pssform"]/input[1]/@value')[0]
    return id


data = {
    'ID': '%s' % get_cookies_id(),
    'sortcolumn': 'an'
}
r = requests.post(url=data_url, headers=headers, data=data)
d = r.text.split('\r\n')
list_data = []
for i in d:
    tmp_list = i.split(",")
    if tmp_list != ['']:
        list_data.append(tmp_list)
dict_data = []
key_list = list_data[0]
for i in range(len(list_data)):
    if i != 0:
        dict_data.append(dict(zip(key_list, list_data[i])))
content = pd.DataFrame(dict_data)