作者keroromoa (夏天一到就凸显自己很鲁)
看板Python
标题[问题] 爬虫时href有空格
时间Mon Jan 15 21:15:24 2018
小弟爬虫新手想请教各位前辈
目前有一个专题是要爬518人力银行的徵才网页
小弟目前是用beautifulsoup爬列表页里面的Anchor
但是518连结内文档的Anchor href有空白像这样
https://www.518.com.tw/外商线上娱乐集团 徵聘 JAVA Developer 2名 工作地点
菲律宾-其它亚洲-东南亚-job-1471387.html?kw=java&pi=1
导致使用
for link in soup.find_all('a'):
print(link.get('href'))
爬出来的href只到
https://www.518.com.tw/外商线上娱乐集团
空格後面的变成纯字串造成爬出来的href连到错误的网页
所以想请问此情况要如何解决让空格後面的内容也可以放进去href?
感谢各位前辈帮忙~
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 114.25.150.143
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Python/M.1516022128.A.3FE.html
※ 编辑: keroromoa (114.25.150.143), 01/15/2018 21:24:43
1F:→ vi000246: regex 01/15 22:26
2F:→ tedwu2001: 1. 如果格式正确,就算有空白也不会影响抓到的attr内容 01/16 06:58
4F:→ tedwu2001: 2. 我自己对518发请求在一般列表可以抓到完整url 01/16 07:00
5F:→ tedwu2001: 综上所述,你可能要看一下是不是你别的处理有截断输入 01/16 07:01
https://imgur.com/3q1Z7wn
不好意思,我表达的不够清楚,
因为我是在jupyter notebook操作,所以希望抓下来的URL能够保有连结的功能,
不过出来的URL还是一样连结只到空格前,空格後变成纯字串,
这样来看是不是jupyter notebook在塞URL只要遇到空格都会出现同样的状况?感谢~
※ 编辑: keroromoa (118.165.209.19), 01/16/2018 20:28:03
6F:→ olycats: 所以你爬出来的href是正确的,只是在jupyter的print结果 01/16 22:04
7F:→ olycats: ,显示的超连结不符合预期,直接点下去无法连结到你要的 01/16 22:04
8F:→ olycats: 网页。是这样吗? 01/16 22:04
9F:→ keroromoa: 是,我这要求是不是太龟毛了Orz 01/16 22:26
10F:→ tedwu2001: 因为规格上url是不能有空白,实际上动作时会被encode 01/16 22:41
11F:→ tedwu2001: 这样切是可以理解,不过刚刚试了markdown外挂也不行 01/16 22:42
12F:→ tedwu2001: 他不会照着变数去render.....这就很烦,不过还是可以解 01/16 22:43
15F:→ olycats: 可是为何需要在这里显示为超连结呢?如果是我的话,举例 01/16 22:44
16F:→ olycats: 来说我想把资料抓了之後整理到excel档,那对我来说print 01/16 22:44
17F:→ olycats: 出来的结果怎麽呈现并不重要。 01/16 22:44
18F:→ tedwu2001: 直接叫他吐html出来 01/16 22:46
19F:→ vi000246: 把空格改成%20试试看 01/17 00:26
20F:→ uranusjr: 直接在 print 之前 urlencode 一发不行吗 01/17 11:31
21F:→ tedwu2001: 我觉得要考虑schema很麻烦加encode後不好读就没有保留 01/17 11:54
22F:→ tedwu2001: 在out上的意义,所以如果真要作还是会用_repr_html_ 01/17 11:55
最後是用先将所有anchor放进阵列再用特定字筛选出想要的anchor做成新的阵列
把新的阵列用for回圈放进_repr_html_了,
只是包成_main.anchor_物件就没办法直接用阵列显示出超连结,
必须要加index才能一个个把超连结显示出,不过至少是能用的超连结了~感谢~
https://imgur.com/aagtHEz
https://imgur.com/8r7Jwg5
※ 编辑: keroromoa (140.115.236.203), 01/21/2018 18:35:09