2017-08-07 41 views
0

我是Python的新手,并试图在Python中创建一个脚本,该脚本会刮擦一个网站并在几个链接中返回文本。出于某种原因,我不明白为什么这不起作用,并想知道为什么。我的正则表达式是:正则表达式在Python中没有得到我想要的结果

> regex = re.compile(r'<a target="_blank" title=".+" href=".+.pdf">(.+)</a>') 

全码:

import requests, re 

response = requests.get('websithere') 

websiteDate = response.text 

regex = re.compile(r'<a target="_blank" title=".+" href=".+.pdf">(.+)</a>') 
mo = regex.findall(websiteDate) 
print(mo) 

我把(+)组中认为它会发现在那里列出的任何文字。该3个链接它通过扫描为:

> <a target="_blank" title="Farm Business &amp; Production Management 
> Instructor" href="/uploadedpdfs/job-opportunities/Farm Business 
> Production Mgt Instructor 8-17.pdf">Farm Business &amp; Production 
> Management Instructor</a> 
> 
> <a target="_blank" title="Paramedic Tech Adjunct Instructor Aide" 
> href="/uploadedpdfs/job-opportunities/Paramedic Adjunct Instructor 
> Aide.pdf">Paramedic Tech Adjunct Instructor Aide</a> 
> 
> <a target="_blank" title="Technology Support Specialist" 
> href="/uploadedpdfs/job-opportunities/Technology Support 
> Specialist.pdf">Technology Support Specialist</a> 

而不是我的结果只返回: “技术支持专家”

什么我错在这里做什么?我只是试图返回标签内的文字。我尝试了一下,并且无法使其工作。任何帮助,将不胜感激。

谢谢!

+0

您为执行文章中显示的输出而执行哪条语句?请粘贴所有相关的代码。作为一个附注,不要使用REGEX来分析HTML。 https://stackoverflow.com/questions/6751105/why-its-not-possible-to-use-regex-to-parse-html-xml-a-formal-explanation-in-la。使用BeautifulSoup。 – DyZ

+0

不要使用正则表达式来解析html。 –

回答

0

简单:你的正则表达式的一部分title=".+"消耗一切从第一题开始到最后一个标题的末尾:

农场经营&生产管理指导的“href =”/uploadedpdfs /工作机会/农场业务生产管理讲师8-17.pdf“>农场业务&生产管理讲师</a> < a target =”_ blank“title =”医护人员技术辅导教员助理“href =”/ uploadedpdfs/job-机会/辅助医疗辅助教练Aide.pdf“>辅助医疗技术兼职辅导员助手</a> <目标= “_空白” 称号=“技术支持专家

DO NOT USE REGEX TO PARSE HTML

使用BeautifulSoup来代替。

+0

好的,所以我对BeatifulSoup不是很熟悉,但我已经使用了一下。除了正则表达式之外,还有其他的东西可以用在BeautifulSoup中,以缩小我可以读取的结果的范围吗?不使用正则表达式的网站背后的原因是什么? – Winks

+0

丰富的BS文档提供了如何从HTML中提取链接标题的示例。帮助你自己。 – DyZ