作者students (无敌风火轮)
看板Python
标题[问题] 电影时刻表爬虫新手问题
时间Tue Apr 17 11:04:51 2018
最近在练习写爬虫,又被一些基本观念的问题给卡住了,以下是威秀影城的爬虫程式码。
#复仇者联盟页面
MOVIE_URL = '
http://www.vscinemas.com.tw/vsTicketing/ticketing/ticket.aspx?cin
ema=1|TP&movie=HO00006836'
#确认URL存在
def get_web_page(url):
resp = requests.get(url)
if resp.status_code != 200:
print('无效的URL:',resp.url)
return None
else:
return resp.text
#找出电影资讯的模组
def get_movie(dom):
soup = BeautifulSoup(dom,'html5lib')
movies = []
divs = soup.find('ul','bookList').find_all('li')
for div in divs:
movie = dict()
movie['name'] = soup.find('div','movieDescribe').h1.text
movie['date'] = div.parent.find_previous_sibling('h4').text
movie['time'] = div.text
movies.append(movie)
return movies
#主程式模组
def main():
page = get_web_page(MOVIE_URL)
if page:
s = get_movie(page)
print(s)
for a in s:
print(a['name'],a['date'],a['time'])
if __name__ == '__main__':
main()
--------------执行结果-----------
[{'name': '(4DX 3D)复仇者联盟 3:无限之战', 'date': '2018 年 04 月 25 日 星期
三', 'time': '13:30'}, {'name': '(4DX 3D)复仇者联盟 3:无限之战', 'date': '201
8 年 04 月 25 日 星期三', 'time': '16:30'}, {'name': '(4DX 3D)复仇者联盟 3:无
限之战', 'date': '2018 年 04 月 25 日 星期三', 'time': '19:30'}, {'name': '(4D
X 3D)复仇者联盟 3:无限之战', 'date': '2018 年 04 月 25 日 星期三', 'time': '0
1:30(隔日)'}]
(4DX 3D)复仇者联盟 3:无限之战 2018 年 04 月 25 日 星期三 13:30
(4DX 3D)复仇者联盟 3:无限之战 2018 年 04 月 25 日 星期三 16:30
(4DX 3D)复仇者联盟 3:无限之战 2018 年 04 月 25 日 星期三 19:30
(4DX 3D)复仇者联盟 3:无限之战 2018 年 04 月 25 日 星期三 01:30(隔日)
有两个问题:
1.我想把电影时刻的time变成这样,我在def get_movie()要怎麽写比较好。
{'name': '(4DX 3D)复仇者联盟 3:无限之战', 'date': '2018 年 04 月 25 日 星期三
', 'time': '13:30 , 16:30 , 19:30, 01:30(隔日)’}
2.想直接在主程式区块列印出这样的格式
(4DX 3D)复仇者联盟 3:无限之战 2018 年 04 月 25 日 星期三 13:30 , 16:30 , 19:3
0, 01:30(隔日)
谢谢大家
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 180.217.160.180
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Python/M.1523934293.A.7C2.html
1F:推 coeric: 把你的回圈 for div in divs 内的 name,date拉出来 04/17 11:38
2F:→ coeric: time部份去做一个小dict,回圈跑完,再塞到movie['time'] 04/17 11:39
3F:推 vi000246: 1.关键字datetime format 去找个lib把中文时间转date类 04/17 11:46
4F:→ vi000246: 型 再转成你要的格式 04/17 11:46
5F:→ vi000246: 2.你可能要先把json转成强型别物件 dict、class、tuple 04/17 11:47
6F:→ vi000246: 之类的 再用名称做group by 把时间捞出来成一个list 04/17 11:48
7F:→ coeric: 时间的部份,我应该会用re取出 04/17 12:31
8F:→ coeric: 或是用datetime内的strptime也可 只是星期几的部份 04/17 12:39
9F:→ coeric: 比较麻烦点,是否有其他高手一行文? 04/17 12:40
10F:→ uranusjr: 星期几反正根本不需要, 直接 [:-3] 去掉就好 04/17 12:46
11F:→ coeric: 同意楼上,因为有日期後,自然可以用isoweekday重现 04/17 12:47
12F:→ vi000246: 啊 我看错问题了 日期直接取出来即可 04/18 14:34