首页 > 解决方案 > 如何使用 python 抓取网站中的 url 链接(仅限正则表达式)

问题描述

只需要使用正则表达式来抓取评分链接,总共有 250 个评分链接,然后将其保存到 txt 文件。

网址:https ://www.imdb.com/

我之前尝试过使用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')

标签: pythonurlweb-scrapingtxt

解决方案


这是我的笨拙尝试:

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弦非常方便,我强烈建议您学习和使用它们


推荐阅读