Python 使用BeautifulSoup 4从多个页面获取多个元素
我有几页要刮,我得到了一部分html代码(从每一页),我想得到另一部分代码。因此,在:Python 使用BeautifulSoup 4从多个页面获取多个元素,python,beautifulsoup,Python,Beautifulsoup,我有几页要刮,我得到了一部分html代码(从每一页),我想得到另一部分代码。因此,在: reqw = [requests.get(i) for i in ds['for_change']] soups = [BeautifulSoup(i.content, 'html.parser') for i in reqw] 我开始从每个页面收集我需要的代码部分: li = [] for i in range(len(soups)): li.append(soups[i].find_all('l
reqw = [requests.get(i) for i in ds['for_change']]
soups = [BeautifulSoup(i.content, 'html.parser') for i in reqw]
我开始从每个页面收集我需要的代码部分:
li = []
for i in range(len(soups)):
li.append(soups[i].find_all('li', attrs={'itemprop':'application'}))
结果是:
li[1]
>>>[<li itemprop="application" itemscope="" repeat="">
>>><span itemprop="filingDate">2016-06-30</span>
>>><span itemprop="countryCode">US</span>
>>><span itemprop="applicationNumber">US15/199,528</span>
>>><a href="/patent/US10059683B2/en"><span itemprop="documentId">patent/US10059683B2/en</span></a>
>>><span itemprop="legalStatusCat">active</span>
>>><span itemprop="legalStatus">Active</span>
>>></li>,
>>>next element that is similar to previuos, ...]
我犯了一个错误
AttributeError: ResultSet object has no attribute 'find_all'. You're probably treating a list of elements like a single element. Did you call find_all() when you meant to call find()?
我的任务是获取下两行
<span itemprop="countryCode">US</span>
<a href="/patent/US10059683B2/en"><span itemprop="documentId">patent/US10059683B2/en</span></a>
也许我可以再次在我的列表中使用漂亮的汤,然后再提取一些来得到我需要的东西。但我相信有一些更容易做到的可能性。谢谢你的帮助。我正在使用的链接示例如下请尝试以下方法:
for li_tag in li:
span = li_tag.find('span', {'itemprop':'countryCode'}).text
links = li_tag.find_all('a')
print(span)
[print(link.text) for link in links]
输出:
US
patent/US10059683B2/en
li[1]
是li
标记的列表。你想在哪个li
标签上查找所有。我正在删除几个页面,所以我需要所有li的信息。实际上,每个页面都返回多个li
元素。您有一个li
元素列表。它正在工作!但有可能不是从li列表而是从原始代码中得到结果吗?像li,span,一次提取的链接?你能详细说明一下吗,这样我可以帮你吗?首先我在刮汤[I]。查找所有('li',attrs={'itemprop':'application')(第一个动作)。然后我将使用你有目的的代码(第二个动作)。它正在发挥作用。但是我能在一个动作中得到所有的li、链接和跨度吗?你可以简化它。只需将li中li_标签的更改为汤[i]中li_标签的。查找所有('li',attrs={'itemprop':'application'})
for li_tag in li:
span = li_tag.find('span', {'itemprop':'countryCode'}).text
links = li_tag.find_all('a')
print(span)
[print(link.text) for link in links]
US
patent/US10059683B2/en