Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/360.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Beauty Soup-使用find_all从多个网页中提取文本_Python_Beautifulsoup - Fatal编程技术网

Python Beauty Soup-使用find_all从多个网页中提取文本

Python Beauty Soup-使用find_all从多个网页中提取文本,python,beautifulsoup,Python,Beautifulsoup,我试图从一些IMDb评级页面中提取“所有年龄段”的投票计数,但我编写的代码返回额外的HTML代码,我不确定如何仅提取数字。IMDb有一些数据可供下载,但不包括男性和女性选民。我已经通读并尝试了类似SO问题中列出的解决方案,例如,但使用.text或text=True不会返回任何结果 我正在使用的代码: from bs4 import BeautifulSoup from requests import get from operator import itemgetter imdburls =

我试图从一些IMDb评级页面中提取“所有年龄段”的投票计数,但我编写的代码返回额外的HTML代码,我不确定如何仅提取数字。IMDb有一些数据可供下载,但不包括男性和女性选民。我已经通读并尝试了类似SO问题中列出的解决方案,例如,但使用.text或text=True不会返回任何结果

我正在使用的代码:

from bs4 import BeautifulSoup
from requests import get
from operator import itemgetter

imdburls = ['https://www.imdb.com/title/tt0029844/ratings','https://www.imdb.com/title/tt0030993/ratings']

Votes = []

for i in imdburls:
    url = i
    page = get(url)
    soup = BeautifulSoup(page.content, 'lxml') 
    content = soup.find(id="main")
    voteValues = content.find_all(class_="smallcell")
    voteValues = itemgetter(0,5,10)(voteValues) # This returns the values from the 'All Ages' column
    Votes.append(voteValues)
当我只需要实际的数字时,Votes会为第一个url返回此值:

[(<div class="smallcell">
  <a href="/title/tt0029844/ratings?demo=imdb_users">
                      1,761
                  </a>
  </div>,
  <div class="smallcell">
  <a href="/title/tt0029844/ratings?demo=males">
                      1,176
                  </a>
  </div>,
  <div class="smallcell">
  <a href="/title/tt0029844/ratings?demo=females">
                      178
                  </a>
  </div>),  
非常感谢您的帮助。

您需要s中元素的.text

从bs4导入BeautifulSoup 从请求导入获取 从运算符导入itemgetter imdburls=['https://www.imdb.com/title/tt0029844/ratings','https://www.imdb.com/title/tt0030993/ratings'] 票数=[] 对于imdburls中的i: url=i page=geturl soup=beautifulsoupage.content,“lxml” content=soup.findid=main voteValues=content.selectdiv.smallcell>a voteValues=itemgetter0,5,10voteValues这将返回“所有年龄”列中的值 投票。追加[n.text.strip for n in voteValues] 从pprint导入pprint 赞成票