【发布时间】:2021-02-12 17:00:22
【问题描述】:
我有两个从网站上抓取数字的功能。都没有得到想要的输出,但它们很接近。我知道我遗漏了一些明显的东西。
def getNums():
headers = {'User-Agent' : 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.96 Safari/537.36 Edg/88.0.705.53'}
r = requests.get(url, headers=headers)
soup = BeautifulSoup(r.text, 'html.parser')
nums = soup.find_all('ul', {'class' : 'numbers'})
return nums
输出:
<ul class="numbers">
<li class="result">11</li>
<li class="result">13</li>
<li class="result">14</li>
<li class="result">27</li>
<li class="result">40</li>
<li class="result">41</li>
<li class="addresult">23</li>
</ul>
...
这个输出很好,但我一直在努力从 ResultSet 中取出数字并将它们放入一个数组中。
第二个功能:
def getMainNums():
headers = {'User-Agent' : 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.96 Safari/537.36 Edg/88.0.705.53'}
r = requests.get(url, headers=headers)
soup = BeautifulSoup(r.text, 'html.parser')
numdict = {
'0': soup.find('ul', {'class' : 'numbers'}).find_all('li')[0].text,
'1': soup.find('ul', {'class' : 'numbers'}).find_all('li')[1].text,
'2': soup.find('ul', {'class' : 'numbers'}).find_all('li')[2].text,
'3': soup.find('ul', {'class' : 'numbers'}).find_all('li')[3].text,
'4': soup.find('ul', {'class' : 'numbers'}).find_all('li')[4].text,
'5': soup.find('ul', {'class' : 'numbers'}).find_all('li')[5].text,
'6': soup.find('ul', {'class' : 'numbers'}).find_all('li')[6].text,
}
return numdict
第二个函数从列表的第一个实例中提取数字,我知道这就是我要求它做的事情。我想要求它从每个列表中获取它们 - 通常每页大约有 100 个。
理想情况下,我会在每个单独的列表中使用第二个函数 - 或者使用第一个函数,我会将数字与 ResultSet 列表输出分开并将它们放入一个数组中(或者像我一样使用 .text在第二个函数中)。
【问题讨论】:
标签: python beautifulsoup