我有一个R脚本,我正试图在python中重新制作它。
在R中,我使用rvest
包,但我很难在bs4
中找到等效语法
myurllist<-"http://mis.ercot.com/misapp/GetReports.do?reportTypeId=12301&reportTitle=Settlement%20Point%20Prices%20at%20Resource%20Nodes,%20Hubs%20and%20Load%20Zones&showHTMLView=&mimicKey"
mylist<-GET(myurllist)
file_list<-mylist %>% read_html %>% html_nodes(".labelOptional_ind") %>% html_text
url_list<-read_html(mylist) %>% html_nodes("a") %>% html_attr('href')
当我运行它时,我会得到file_list
,这是实际的文件名,而url_list
是下载这些文件的链接。我不知道如何用python做同样的事情。
如果我这样做:
page=requests.get(myurllist)
fp= BeautifulSoup(page.content, 'lxml')
url_list_raw=fp.find_all('a')
url_list=[x['href'] for x in url_list_raw]
我可以用非常相似的语法得到url_list
。如果我这样做,我可以破解url_list_raw
以获得file_list
:
file_list=[x.parent.parent.parent.find('td').text for x in url_list_raw]
使用三重parent
感觉很麻烦,而且可能会对网站进行一些小的更改。有更好的方法吗?
第二个版本的等效版本是在您的列表理解范围内继续使用css类选择器,就像使用rvest一样;这将通过bs4的CCD_ 9方法来应用。然后,您将需要每个节点的.text
属性。
file_list = [i.text for i in fp.select('.labelOptional_ind')]