Python中的正则表达式没有得到我想要的结果

时间:2017-08-07 02:34:40

标签: python python-3.x

我是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>

相反,我的结果只是返回: &#39;技术支持专家&#39;

我在这里做错了什么?我只是想在标签内部返回文本。我尝试过玩一下,但是无法让它发挥作用。任何帮助将不胜感激。

谢谢!

1 个答案:

答案 0 :(得分:0)

简而言之:正则表达式的title=".+"部分会消耗从第一个标题开头到最后一个标题结尾的所有内容:

  

农场商业&amp;生产管理讲师&#34; href =&#34; / uploadedpdfs / job-opportunities / Farm Business Production Mgt Instructor 8-17.pdf&#34;&gt; Farm Business&amp;生产管理讲师&lt; / a&gt; &lt; a target =&#34; _ blank&#34; title =&#34; Paramedic Tech兼职讲师助理&#34; href =&#34; / uploadedpdfs / job-opportunities / Paramedic Adjunct Instructor Aide.pdf&#34;&gt; Paramedic Tech Adjunct Instructor Aide&lt; / a&gt; &lt; a target =&#34; _ blank&#34; title =&#34;技术支持专家

DO NOT USE REGEX TO PARSE HTML

改用BeautifulSoup。