我是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 & Production Management
> Instructor" href="/uploadedpdfs/job-opportunities/Farm Business
> Production Mgt Instructor 8-17.pdf">Farm Business & 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;
我在这里做错了什么?我只是想在标签内部返回文本。我尝试过玩一下,但是无法让它发挥作用。任何帮助将不胜感激。
谢谢!
答案 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。