【问题标题】:Webscraping with regex problem with loop and variablesWeb Scraping 与循环和变量的正则表达式问题
【发布时间】:2020-08-18 17:33:51
【问题描述】:

您能帮我调试一下这段代码吗? 我怀疑变量和 '' 或 "" 有问题,但我不知道是什么问题。

import requests
import re

urls = ['url1', 'url2', 'url3']
regexes = ['regex1', 'regex2', 'regex3']

url1 = 'https://...' 
regex1 = r'(\d+\.)\s+([^\n][A-Za-z]+)<\/a>'
url2 = 'https://...' 
regex2 = "r'\/review\/([^\n][A-Za-z]+)'"
url3 = 'https://...' 
regex3 = "r'(\d+\.)\s+([^\n][A-Za-z]+)'"


for url, regex in zip(urls, regexes):
    r = requests.get(url)
    results = re.findall(regex, r.text)

print(results)

【问题讨论】:

    标签: python regex loops variables web-scraping


    【解决方案1】:

    上面代码的问题是:

    • Regexen 用不应该的双引号括起来
    • urlsregexes 列表应分别包含 url_regex_ 变量而不是字符串文字。
    • 使用给定的缩进,print(results) 仅输出最后一次迭代的匹配项。

    重新编码:

    import requests
    import re
    
    
    url1 = 'https://...' 
    regex1 = r'(\d+\.)\s+([^\n][A-Za-z]+)<\/a>'
    #
    # ... other urls/regexen
    #
    
    urls = [url1, url2, url3]
    regexes = [regex1, regex2, regex3]
    
    
    for (url, regex) in zip(urls, regexes):
        r = requests.get(url)
        results = re.findall(regex, r.text)
        print(results)
    

    提供了一个演示 here (repl.it)(它在第一次迭代中使用特定的 url 和更简单的正则表达式来生成实际匹配)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-05-15
      • 1970-01-01
      • 1970-01-01
      • 2020-11-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多