在网上看到有人利用python+beautifulsoup爬取豆瓣Top250
试着自己模仿这个做了个爬取IMDB的,
可惜只能爬取到11个。
后来检查了超久,
才发现,
soup=BeautifulSoup(contents)这里,内容不完整,只能到11个电影为止。
代码如下:
import urllib2 from bs4 import BeautifulSoup mylist=[] def crawl(url): headers={‘User-Agent‘:‘Mozilla/5.0(Windows;U;Windows NT 6.1;en-US;rv:1.9.1.6) Gecko/20091201 Firefox/3.5.6‘} req=urllib2.Request(url,headers=headers) page=urllib2.urlopen(req,timeout=200) contents=page.read() soup=BeautifulSoup(contents) for tag in soup.find_all(‘tr‘,class_={‘odd‘,‘even‘}): m_order=tag.find(‘td‘,class_=‘titleColumn‘).span.get_text() m_name=tag.find(‘td‘,class_=‘titleColumn‘).a.get_text() m_rating_score=float(tag.find(‘td‘,class_=‘ratingColumn imdbRating‘).strong.get_text()) print("%s %s %s" % (m_order,m_name,m_rating_score)) mylist.append((m_order,m_name,m_rating_score)) crawl(‘http://www.imdb.com/chart/top?ref_=nv_ch_250_4‘)
后来,好像需使用正则表达式,把爬取来的网页进行处理后才好弄。
但是正则表达式未操作过,
如果有人看到,想问下是否可以不通过正则表达式来解决这个问题呢?
时间: 2024-10-10 12:38:16