使用我的刮擦脚本后:
from selenium import webdriver
from bs4 import BeautifulSoup
import csv
browser = webdriver.Firefox()
browser.get('http://dyn.com/about/events/')
html = browser.page_source
soup = BeautifulSoup(html)
titles = [tag.text for tag in soup.find_all('p','pubdate')]
我得到的结果如下:
[u'\ n \ n \ t \ t \ tWEBINAR:如何扩大您的全球影响力到中国\ xa0 \ n \ t \ t \ t \ n \ t \ t \ t \ t \ 2014年12月\ t \ t \ t \ n \ n \ n',\ n \ n \ n \ n \ t \ t \ t \ t \ t \ tt \ nattend \ n',u'\ n \ n \ t \ t \ tAcquia参与用户大会\ u2013波士顿,马萨诸塞州\ n \ t \ t \ t \ n \ t \ t \ t \ tNov 2014年3月5日\ t \ t \ t \ nexhibitattend \ n',u'\ n \ n \ t \ t \ t \ tCloud Expo \ u2013圣克拉拉,加利福尼亚\ xa0 \ n \ t \ t \ t \ n \ t \ t \ t \ t 2014年4月6日\ t \ t \ t \ nexhibit \ n',u'\ n \ n \ t \ t \ t \ 2014年全球运营商奖\阿姆斯特丹\ xa0 \ n \ t \ t \ t \ t \ n \ t \ t \ t 2014年4月4日\ t \ t \ t \ n \ n',u'\ n \ n \ t \ t \ t \ ttw \ tw \ Summit \ u2013都柏林,爱尔兰\ xa0 \ n \ t \ t \ \ t \ n \ t \ t \ tNov 4 - 6,2014 \ t \ t \ t \ n \ t \ n \ n \ n',u'\ n \ n \ t \ t \ t \ t \ tVelocity Europe \ u2013巴塞罗那,西班牙\ xa0 \ n \ t \ t \ t \ n \ t \ t \ tNov 17 - 19,2014 \ t \ t \ t \ nexhibit \ n',u'\ n \ n \ t \ t \ tNH / VT FIRST LEGO League Championship Event \ xa0 \ n \ t \ t \ t \ n \ t \ t \ t \ tDec 6,2014 \ t \ t \ t \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n> \ n \ n“
我是python的新手,所以你能建议我如何从这个结果中获取事件名称,日期,事件类型?
谢谢!
答案 0 :(得分:0)
您可以替换输出中的\n
和\t
re.sub
函数替换。
import re
for val in titles:
print re.sub("[\n\t]", "", val)
将产生输出
WEBINAR: How To Expand Your Global Reach To China Oct 22, 2014speak
LAUNCH Scale – San Francisco, CA Oct 23 - 24, 2014attend
Acquia Engage User Conference – Boston, MA Nov 3 - 5, 2014exhibitattend
Cloud Expo – Santa Clara, CA Nov 4 - 6, 2014exhibit
The Global Carrier Awards 2014 – Amsterdam Nov 4, 2014
Web Summit – Dublin, Ireland Nov 4 - 6, 2014speak
Velocity Europe – Barcelona, Spain Nov 17 - 19, 2014exhibit
NH/VT FIRST LEGO League Championship Event Dec 6, 2014speak
功能
re.sub("[\n\t]", "", val)
用空字符串替换\n
和\t
。
答案 1 :(得分:0)
您可以使用stripped_strings
属性来拔出每个组件并构建一个字典列表,如下所示:
from selenium import webdriver
from bs4 import BeautifulSoup
import csv
browser = webdriver.Firefox()
browser.get('http://dyn.com/about/events/')
html = browser.page_source
soup = BeautifulSoup(html)
events = []
titles = soup.find_all('p','pubdate')
for title in titles:
event = list(title.stripped_strings)
events.append({
'event_name': event[0],
'event_date': event[1],
'event_type': event[2:] # there can be multiple event types so use a list
})
>>> from pprint import pprint
>>> for event in events:
... pprint(event)
{'event_date': u'Oct 22, 2014',
'event_name': u'WEBINAR: How To Expand Your Global Reach To China',
'event_type': [u'speak']}
{'event_date': u'Oct 23 - 24, 2014',
'event_name': u'LAUNCH Scale \u2013 San Francisco, CA',
'event_type': [u'attend']}
{'event_date': u'Nov 3 - 5, 2014',
'event_name': u'Acquia Engage User Conference \u2013 Boston, MA',
'event_type': [u'exhibit', u'attend']}
{'event_date': u'Nov 4 - 6, 2014',
'event_name': u'Cloud Expo \u2013 Santa Clara, CA',
'event_type': [u'exhibit']}
{'event_date': u'Nov 4, 2014',
'event_name': u'The Global Carrier Awards 2014 \u2013 Amsterdam',
'event_type': []}
{'event_date': u'Nov 4 - 6, 2014',
'event_name': u'Web Summit \u2013 Dublin, Ireland',
'event_type': [u'speak']}
{'event_date': u'Nov 17 - 19, 2014',
'event_name': u'Velocity Europe \u2013 Barcelona, Spain',
'event_type': [u'exhibit']}
{'event_date': u'Dec 6, 2014',
'event_name': u'NH/VT FIRST LEGO League Championship Event',
'event_type': [u'speak']}
您可能还想在字符串event[0]
u' \u2013 '