gpt4 book ai didi

regex - 使用 Scrapy 'regex definition'

转载 作者:行者123 更新时间:2023-12-05 01:25:02 24 4
gpt4 key购买 nike

我一直在尝试生成一个脚本来从网站 https://services.aamc.org/msar/home#null 中抓取数据.我生成了一个 python scrapy 2.7 脚本来从网站上获取一段文本(此时我的目标是任何东西),但似乎无法让它工作。我怀疑这是因为我没有正确配置我的正则表达式来识别我试图从中抓取的 span 标签。有谁知道我可能做错了什么以及我如何解决它?

非常感谢。

马特


import urllib
import re

url = "https://services.aamc.org/msar/home#null"
htmlfile = urllib.urlopen(url)
htmltext = htmlfile.read()
regex = '<td colspan="2" class="schoolLocation">(.+?)</td>'
pattern = re.compile(regex)
price = re.findall(pattern, htmltext)
print "the school location is ",price

最佳答案

首先,don't use regular expressions to parse HTML .有称为 HTML 解析器的专门工具,如 BeautifulSouplxml.html

实际上,该建议与这个特定问题无关,因为不需要解析 HTML。 此页面上的搜索结果是从一个单独的端点动态加载的,浏览器向该端点发送 XHR 请求、接收 JSON 响应、解析它并借助在浏览器中执行的 javascript 显示搜索结果. urllib 不是浏览器,它只为您提供一个初始页面 HTML,其中包含一个空的搜索结果容器。

您需要做的是在您的代码中模拟XHR 请求。让我们使用 requests包裹。完整的工作代码,打印学校类(class)列表:

import requests


url = "https://services.aamc.org/msar/home#null"
search_url = "https://services.aamc.org/msar/search/resultData"

with requests.Session() as session:
session.get(url) # visit main page

# search
data = {
"start": "0",
"limit": "40",
"sort": "",
"dir": "",
"newSearch": "true",
"msarYear": ""
}
response = session.post(search_url, data=data)

# extract search results
results = response.json()["searchResults"]["rows"]
for result in results:
print(result["schoolProgramName"])

打印:

Albany Medical College
Albert Einstein College of Medicine
Baylor College of Medicine
...
Howard University College of Medicine
Howard University College of Medicine Joint Degree Program
Icahn School of Medicine at Mount Sinai

关于regex - 使用 Scrapy 'regex definition',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36990164/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com