Teo*_*pan 3 python mechanize urllib2 beautifulsoup web-scraping
你能从这个网页中提取VIN号吗?
我试过urllib2.build_opener,请求和机械化.我也提供了用户代理,但他们都没有看到VIN.
opener = urllib2.build_opener()
opener.addheaders = [('User-agent',('Mozilla/5.0 (Macintosh; Intel Mac OS X 10_6_7) ' 'AppleWebKit/535.1 (KHTML, like Gecko) ' 'Chrome/13.0.782.13 Safari/535.1'))]
page = opener.open(link)
soup = BeautifulSoup(page)
table = soup.find('dd', attrs = {'class': 'tip_vehicleStats'})
vin = table.contents[0]
print vin
Run Code Online (Sandbox Code Playgroud)
该页面的大部分信息都是通过Javascript加载和显示的(可能是通过Ajax调用),最有可能直接防止抓取.因此,要么你需要使用运行Javascript的浏览器,并远程控制它,或者在javascript中编写scraper本身,或者你需要解构网站并确定它用Javascript加载的确切内容以及如何,并查看是否你可以复制这些电话.
您可以使用浏览器自动化工具来实现此目的.
例如,这个简单的selenium脚本可以完成你的工作.
from selenium import webdriver
from bs4 import BeautifulSoup
link = "https://www.iaai.com/Vehicles/VehicleDetails.aspx?auctionID=14712591&itemID=15775059&RowNumber=0"
browser = webdriver.Firefox()
browser.get(link)
page = browser.page_source
soup = BeautifulSoup(page)
table = soup.find('dd', attrs = {'class': 'tip_vehicleStats'})
vin = table.contents.span.contents[0]
print vin
Run Code Online (Sandbox Code Playgroud)
BTW,table.contents[0]打印整个范围,包括span标签.
table.contents.span.contents[0] 仅打印VIN号.
| 归档时间: |
|
| 查看次数: |
708 次 |
| 最近记录: |