循环遍历列表中的字符串

时间:2018-03-02 11:18:30

标签: python-3.x list loops xpath

我正在尝试运行下面的代码来获取URL列表(在文件out.txt中)并使用xpath从该页面中提取文本内容。代码从URL中找到域,然后在我创建的具有域和Xpath的json文件中查找域。然后使用xpath查找内容。

但是,现在如果我在循环之外运行代码它可以正常工作(页面= 200)。但是,如果我在循环内部进行操作,我将获得page = 404。

我确定这是循环的语法错误,可能非常简单。我做错了什么?

URLList = open("out.txt").readlines()
for item in URLList:
    inputurl = item
    print (inputurl)
    type(inputurl)

    #this takes a URL and finds the xpath - it uses an external 
    domainlookup.json that is manually created
    # inputurl = input("PLEASE PROVIDE A URL FROM AN APPROVED DOMAIN: ")
    t = urlparse(inputurl).netloc
    domain = ('.'.join(t.split('.')[1:]))

    with open('domainlookup.json') as json_data:
        domainlookup = json.load(json_data)

    for i in domainlookup:
        if i['DOMAIN'] == domain:
             xpath = (i['XPATH'])

    #this requests the xpath from the URL and scrapes the text content

    page = requests.get(inputurl)
    tree = html.fromstring(page.content)
    content = tree.xpath(xpath)

1 个答案:

答案 0 :(得分:0)

您可以使用以下代码找到您的代码有什么问题:

URLList = open("out.txt").readlines()
for item in URLList:
    inputurl = item
    print("[{0}]".format(inputurl) )

正如您从输出中看到的那样,您并未从网址中删除新行字符,这是requests以后无法加载的原因。在使用之前只需strip()

inputurl = item.strip()