我尝试抓取的网站是http://www.boxofficemojo.com/yearly/chart/?yr=2013&p=.htm。我现在关注的具体页面是http://www.boxofficemojo.com/movies/?id=catchingfire.htm。
从这个页面来看,我遇到了两件事情。第一件事是“外国总收入”金额(在总终身收入总额下)。我得到了这个函数的数量:
def getForeign(item_url):
response = requests.get(item_url)
soup = BeautifulSoup(response.content)
print soup.find(text="Foreign:").find_parent("td").find_next_sibling("td").get_text(strip = True)
问题是,我可以将这个数量打印到控制台,但我不能将这些值附加到列表或将它们写入csv文件。对于我需要访问此站点的先前数据,我获得了每部电影的单独信息,并将它们全部附加到一个列表中,然后将其导出到csv文件。
如何将这个“外国总收入”金额作为每部电影的单独金额?我需要更改哪些内容?
第二个问题与获取每部电影的演员/女演员列表有关。我有这个功能:
def getActors(item_url):
source_code = requests.get(item_url)
plain_text = source_code.text
soup = BeautifulSoup(plain_text)
tempActors = []
print soup.find(text="Actors:").find_parent("tr").text[7:]
这列出了一系列演员:Jennifer LawrenceJosh HutchersonLiam HemsworthElizabeth BanksStanley TucciWoody HarrelsonPhilip Seymour HoffmanJeffrey WrightJena MaloneAmanda PlummerSam ClaflinDonald SutherlandLenny Kravitz - 就这样。
我也遇到与外国总金额相同的问题。 我希望单独获取每个角色,然后将它们全部附加到临时列表中,然后将该列表附加到所有电影的另一个完整列表中。我使用导演列表执行了此操作,但是由于所有的导演都是链接,但不是所有的演员/女演员都有html链接,我不能这样做。现在的另一个问题是每个演员之间没有空间。
为什么我当前的功能不起作用,我该如何修复它们?
更多Code ::
def spider(max_pages):
page = 1
while page <= max_pages:
url = 'http://www.boxofficemojo.com/yearly/chart/?page=' + str(page) + '&view=releasedate&view2=domestic&yr=2013&p=.htm'
source_code = requests.get(url)
plain_text = source_code.text
soup = BeautifulSoup(plain_text)
for link in soup.select('td > b > font > a[href^=/movies/?]'):
href = 'http://www.boxofficemojo.com' + link.get('href')
details(href)
listOfForeign.append(getForeign(href))
listOfDirectors.append(getDirectors(href))
str(listOfDirectors).replace('[','').replace(']','')
getActors(href)
title = link.string
listOfTitles.append(title)
page
listOfForeign = []
def getForeign(item_url):
s = urlopen(item_url).read()
soup = BeautifulSoup(s)
return soup.find(text="Foreign:").find_parent("td").find_next_sibling("td").get_text(strip = True)
def spider(max_pages):
page = 1
while page <= max_pages:
url = 'http://www.boxofficemojo.com/yearly/chart/?page=' + str(page) + '&view=releasedate&view2=domestic&yr=2013&p=.htm'
source_code = requests.get(url)
plain_text = source_code.text
soup = BeautifulSoup(plain_text)
for link in soup.select('td > b > font > a[href^=/movies/?]'):
href = 'http://www.boxofficemojo.com' + link.get('href')
listOfForeign.append(getForeign(href))
page += 1
print listOfForeign
返回
追踪(最近一次通话): 文件“C:/Users/younjin/PycharmProjects/untitled/movies.py”,第75行,in 蜘蛛(1) 文件“C:/Users/younjin/PycharmProjects/untitled/movies.py”,第29行,蜘蛛 listOfForeign.append(getForeign(HREF)) getForeign中的文件“C:/Users/younjin/PycharmProjects/untitled/movies.py”,第73行 return soup.find(text =“Foreign:”)。find_parent(“td”)。find_next_sibling(“td”)。get_text(strip = True) AttributeError:'NoneType'对象没有属性'find_parent'