python - 如何使用 python 抓取网站中的 url 链接(仅限正则表达式)
问题描述
只需要使用正则表达式来抓取评分链接,总共有 250 个评分链接,然后将其保存到 txt 文件。
我之前尝试过使用beautifulsoup4,但后来只需要使用正则表达式来提取,所以我不确定。我是否使用 re.findall 来查找所有链接?
from urllib.request import urlopen
from bs4 import BeautifulSoup
url = 'https://www.imdb.com/chart/top'
html = urlopen(url)
soup = BeautifulSoup(html, 'html.parser')
count = 0
all_urls = list()
for tdtag in soup.find_all(class_ = "titleColumn"):
url = tdtag.a['href']
all_urls.append(url)
count += 1
data = np.array(all_urls)
print(data)
np.savetxt('urls.txt', data, fmt = '%s', encoding = 'utf-8')
解决方案
这是我的笨拙尝试:
from re import compile
from requests import get
BASE = 'https://www.imdb.com/chart/top'
page = get(BASE)
pattern = compile(r'<a href="/title/([a-z0-9]+)/')
URLs = pattern.findall(page.text)
try:
f = open('urls.txt', 'x', encoding='utf-8')
except FileExistsError as e:
print(e)
else:
for i in set(URLs):
f.write(f'/title/{i}/\n')
f.close()
requests.get(URL)
是一个响应对象。所以,你需要requests.get(URL).text
正则表达式来处理它https://regex101.com/是一个方便的网站,可用于构建和测试正则表达式
try
,except
,else
可用于在url.txt
文件已存在时处理错误f弦非常方便,我强烈建议您学习和使用它们
推荐阅读
- python - 如何遍历此列表并具有与原始列表相同的长度?
- javascript - 在反应js中路由另一个页面时隐藏组件
- javascript - 链接预取无法正常工作,导航时再次获取脚本
- xml - 如何修复“根元素后面的文档中的标记必须格式正确。” 日食中的错误
- html - 如何在页面顶部绘制半圆
- c# - 如何使 Visual Studios 正确突出显示蓝色类?
- dax - 使用 SUMMARIZE 计算一系列日期的值
- python - discord.py 上的角色位置
- c - 当这个来自嵌套在其他结构中的结构时,malloc char 指针如何
- python - 在 QImage 之上创建一个透明网格