【发布时间】:2016-05-16 18:10:26
【问题描述】:
我正在编写一些代码来从众包中抓取一些数据。
思路是获取Title、Description、目标资金、募集资金、类别等信息
首先,我在单个页面上进行了尝试。代码有效。这里是:
from bs4 import BeautifulSoup
import urllib, re
data = {
'title' : [],
'description' : [],
'target' : [],
'raised':[],
'category' : []
}
l=urllib.request.urlopen('https://www.crowdcube.com/investment/primo-18884')
tree= BeautifulSoup(l, 'lxml')
#title
title=tree.find_all('div',{'class':'cc-pitch__title'})
data['title'].append(title[0].find('h2').get_text())
#description
description=tree.find_all('div',{'class':'fullwidth'})
data['description'].append(description[1].find('p').get_text())
#target
target=tree.find_all('div',{'class':'cc-pitch__stats clearfix'})
data['target'].append(target[0].find('dd').get_text())
#raised
raised=tree.find_all('div',{'class':'cc-pitch__raised'})
data['raised'].append(raised[0].find('b').get_text())
#category
category=tree.find_all('li',{'class':'sectors'})
data['category'].append(category[0].find('span').get_text() )
data
我需要从网站上的所有项目中下载相同的信息。
所有链接都包含在此页面中:(https://www.crowdcube.com/investments?sort_by=0&q=&hof=1&i1=0&i2=0&i3=0&i4=0&sort_by=7)
为此,我开始使用以下代码创建一个 URL 列表:
source= urllib.request.urlopen('https://www.crowdcube.com/investments?sort_by=0&q=&hof=1&i1=0&i2=0&i3=0&i4=0&sort_by=7')
get_link= BeautifulSoup(source, 'lxml')
links_page = [a.attrs.get('href') for a in get_link.select('a[href]')]
links_page = list(set(links_page)) #drops duplicates
links = [l for l in links_page if 'https://www.crowdcube.com/investment/' in l] # drop corrupted links
这是我从该代码中获得的链接示例:
['https://www.crowdcube.com/investment/floodkit-16516',
'https://www.crowdcube.com/investment/east-end-manufacturing-14667',
'https://www.crowdcube.com/investment/wrap-it-up-18021']
一旦有了这个列表,我就想用上面相同的代码运行一个 for 循环。因此:
for link in links:
l=urllib.request.urlopen(link)
tree= BeautifulSoup(l, 'lxml')
#title
title=tree.find_all('div',{'class':'cc-pitch__title'})
data['title'].append(title[0].find('h2').get_text())
#description
description=tree.find_all('div',{'class':'fullwidth'})
data['description'].append(description[1].find('p').get_text())
#target
target=tree.find_all('div',{'class':'cc-pitch__stats clearfix'})
data['target'].append(target[0].find('dd').get_text())
#raised
raised=tree.find_all('div',{'class':'cc-pitch__raised'})
data['raised'].append(raised[0].find('b').get_text())
#category
category=tree.find_all('li',{'class':'sectors'})
data['category'].append(category[0].find('span').get_text() )
data
这不起作用。我尝试了一切只是为了查看在第一次迭代中创建的树,这是空的。
也许问题与这些链接是字符串有关?
【问题讨论】:
-
打印
link(和/或links)以查看您拥有的网址。
标签: python-3.x web-scraping beautifulsoup