作者chaotic0307 (坚持、耐心、努力学习)
看板Python
标题Re: [问题] 请问想查询高铁时刻表的问题
时间Tue Feb 19 10:40:02 2019
※ 引述《chaotic0307 (坚持、耐心、努力学习)》之铭言:
: 各位先进好,小弟刚自学python没多久,最近在练习一个高铁时刻表的爬虫却
: 一直卡关,不知道问题出在哪,用的是python3.6版
: 程式码如下:
: import requests
: from bs4 import BeautifulSoup
: url = 'http://www.thsrc.com.tw/tw/TimeTable/SearchResult'
: form_data = {
: 'StartStation':'977abb69-413a-4ccf-a109-0272c24fd490',
: 'EndStation':'9c5ac6ca-ec89-48f8-aab0-41b738cb1814',
: 'DepartueSearchDate':'2019/01/30',
: 'DepartueSearchTime':'09:30',
: 'SearchWay':'DepartureInMandarin'
: }
: #原例子是用SearchDate,但在高铁网页按F12看到是DepartueSearchDate,不知有错吗?
: response_post = requests.post(url, data=form_data)
: soup_post = BeautifulSoup(response_post.text, 'lxml')
: soup_post
: 原本要用下面的方式来记录般车,但是用美丽汤解析後发现class里面根本没有column1
: 不知道问题出在哪?
: # 所有班车(train_number)
: td_col1 = soup_post.find_all('td', {'class':'column1'})
: train_numbers = []
: for tag in td_col1:
: # print(tag)
: train_number = tag.text
: train_numbers.append(train_number)
: 有尝试加header或是用urllib的方式,但好像都查询不到
: 跪求高手解惑~谢谢!
: 原例:
: https://github.com/music1353/pyHowFun/blob/master/LESSON4%20%E7%88%AC%E8%9F%B
: 2%E5%AF%A6%E6%88%B0%20-%20%E9%AB%98%E9%90%B5%E6%99%82%E5%88%BB.ipynb
自己的文章自己回~
不知道去年高铁网站是不是有改过,一些书上的方法好像都失效了
透过chrome的开发者工具,可以在XHR底下找到回传的data
自己做功课的了解是这应该是动态网页,资料格式应该是json(?
试过一些方法还是抓不到(跟cookies or session有关吗?
在Response Headers 当中显示 Cache-Control: private, max-age=5
没有Allow,是不是代表无法抓取?
但在网页按右键->检查->copy element贴到记事本是有看到的
跪求高手解惑~
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 114.42.225.115
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Python/M.1550544004.A.3C7.html
※ 编辑: chaotic0307 (114.42.225.115), 02/19/2019 11:56:19
1F:→ nini200: 我以为你解决了.... 02/19 17:14
2F:→ chaotic0307: 找很多网页跟方法都还是解不开....我太菜了 02/19 19:04
3F:→ f496328mm: bs4 有时会抓的会有差,res.text 中有 02/19 22:49
4F:→ f496328mm: bs4 没有 02/19 22:49
5F:→ vi000246: 可能header不对 被当成机器人了吧 02/20 11:40
6F:→ chaotic0307: 谢谢,再来试试看..... 02/20 23:38
7F:→ coeric: 我怎麽记得有API可以接? 02/23 08:31
8F:推 Tcap: 现在交通部的ptx有提供api了 03/20 17:38
10F:→ Tcap: 如果要爬动态网站,可能得用Selenium之类的方式 03/20 17:38