作者jakeasa123 (啊斑斑)
看板Python
标题[问题] 新手爬虫遇到Refresh如何解决?
时间Thu Jun 1 00:41:04 2017
各位前辈好,最近因为一点需求在撰写爬虫程式。先是参照了一些网路资源试作了一些常见网站(如高铁)的爬虫,虽然也碰上不少问题但都还算顺利解决。
近期在整理某些领域的国内论文,因此花了不少时间在「台湾博硕士论文知识加值系统」里头,想说能不能用爬虫的方式,蒐集论文的基本资料再来筛选,但碰上了一个问题。
在用以前的经验来撰写爬虫程式时,总会碰上重新导向的语法:「<META HTTP-EQUIV="Refresh" CONTENT="0; ……」,查了一些资料後发现requests.__部分有allow_redirects的参数可以使用,但就算设置其为False也没办法读到东西。应该说,貌似读到的东西也就只有那段重新导向的语法(或者是我程式上有大问题)。
後续也Google了相关的资料,但还是没能解决这个问题,只好来此向各位询问,希望能获得一些指引或解答。
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 220.134.106.248
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Python/M.1496248868.A.8BE.html
1F:→ kenduest: meta 那算是 html 档案内容组成了,不是 requests 06/01 01:38
2F:→ kenduest: 本身处理的范围。你需要的是解析若有这段 meta 06/01 01:38
3F:→ kenduest: 内容抓出请求的 url= 後面指定的网址 06/01 01:39
4F:→ kenduest: 然後把抓出来的 url 丢给 requests.get 重抓内容处理 06/01 01:40
5F:→ kenduest: 要判断有无这类 meta 语法一般可以用 BeautifulSoup 06/01 01:41
6F:→ kenduest: 解析找这类内容,有找到拆解找出 url 网址拿来用 06/01 01:41
7F:→ kenduest: requests 内所谓 allow_redirects 是说一般的 http 06/01 01:42
8F:→ kenduest: 请求对方回应 301, 302 这类回应代码时候,依据 06/01 01:43
9F:→ kenduest: header 内 Location 栏位指定的 url 来进行连结存取 06/01 01:43
谢谢指点!
刚刚改了一下,使用soup.find("meta")得出了其内容并撷取出URL=之後的网址,用该网址重新进行requests,但仍然是碰到相同的情况……得出的结果与首次的结果相同。
两次均是得出:
<META HTTP-EQUIV="Refresh" CONTENT="0;
URL=/cgi-bin/gs32/gsweb.cgi/login?o=dwebmge">
问题仍然无法解决Orz
10F:→ kenduest: 後续要登入啊 说是另外一个新的处理议题 06/01 09:31
好的,我再试试。想说一般网页不用登入就能查询就没注意到了。
要开始试的同时发现登入有验证码,看来短时间以我的功力有点困难 Orz
※ 编辑: jakeasa123 (140.138.152.2), 06/01/2017 12:52:16
11F:推 zerof: 试试 selenium 06/01 13:17