Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 使用Scrapy';正则表达式定义';_Regex_Python 2.7_Scrapy - Fatal编程技术网

Regex 使用Scrapy';正则表达式定义';

Regex 使用Scrapy';正则表达式定义';,regex,python-2.7,scrapy,Regex,Python 2.7,Scrapy,我一直在尝试生成一个脚本来从网站上抓取数据。我生成了一个PythonScrapy2.7脚本来从网站上获取一段文本(我的目标是实现这一点),但似乎无法让它正常工作。我怀疑这是因为我没有正确配置我的正则表达式来识别我试图从中提取的span标记。有人知道我可能做错了什么,以及我如何修复它吗 非常感谢 马特 导入urllib 进口稀土 url=”https://services.aamc.org/msar/home#null" htmlfile=urllib.urlopen(url) htmltext

我一直在尝试生成一个脚本来从网站上抓取数据。我生成了一个PythonScrapy2.7脚本来从网站上获取一段文本(我的目标是实现这一点),但似乎无法让它正常工作。我怀疑这是因为我没有正确配置我的正则表达式来识别我试图从中提取的span标记。有人知道我可能做错了什么,以及我如何修复它吗

非常感谢

马特


导入urllib
进口稀土
url=”https://services.aamc.org/msar/home#null"
htmlfile=urllib.urlopen(url)
htmltext=htmlfile.read()
正则表达式='(.+?)'
pattern=re.compile(regex)
price=re.findall(模式,htmltext)
打印“学校所在地是”,价格
首先。有一些称为HTML解析器的专用工具,如
BeautifulSoup
lxml.HTML

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

您需要做的是在代码中模拟XHR请求。让我们使用软件包。完成工作代码,打印学校课程列表:

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

你是否真的使用了刮蹭的网络擦拭框架?你可以用<代码>蠕虫外壳<代码>测试你的爬虫,另外考虑使用<代码> BeautifulSoup < /代码>。我可以看到您在源代码中查找数据的位置,我可以看到您可以将打印(结果[“xxxx”])更改为您希望在数据中使用的任何变量。几个问题:您是如何找到搜索url的?“data={…}控制什么?(特别是“sort”“dir”“newsearch”和“msarYear”"非常感谢。Matt@MattGrossman当然,请看答案是否值得接受。谢谢。希望我做得对。我刚开始是这个网站的用户。你也能回答这些问题吗?@Mattgrosman当然,我使用过浏览器开发工具,并在加载搜索结果时检查了请求。数据只是复制请求后的参数。希望这会有帮助。我不太明白这一点,但我还是一个新手。非常感谢您的帮助!我将尝试从这里了解其余的。。。
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