【问题标题】:Having trouble creating a list of urls by slicing通过切片创建 url 列表时遇到问题
【发布时间】:2020-10-21 11:09:12
【问题描述】:

所以我一直被困在这个家庭作业问题上,似乎没有得到任何结果:/...我正在尝试创建一个新的 URL 列表,其中包含前 10 部电影的正确 URL,这是我的到目前为止的代码:

tree = html.fromstring(response.content)

titles = [tree.xpath("//a/text()")]

urls = [tree.xpath("//td[@class='titleColumn']//a/@href")]

top10_urls = urls[:10]

top10_urls_fixed = []

for t in top10_urls:

if len(t) > 0:

t = "https://www.imdb.com"+ urls

    top10_urls_fixed.append(t)

***我的网址当前显示为'/title/tt0111161/',我尝试在每个网址前插入'https://www.imdb.com',因此它们看起来像'https://www.imdb.com/title/tt0111161/'

现在实验室上线了,我的教授从不回复他的电子邮件,我整天都在等待,任何帮助都会很棒TT-TT

【问题讨论】:

  • 因为这是 Python,所以您确实需要更正缩进,以便其他人可以更轻松地评估和回答您的问题。整个代码块应位于 StackOverflow 中的单个多行 {} 标记段中。您所做的是分别标记每一行。实际上,看起来主要的逻辑问题是带有 t = ... 的行在其中您试图将字符串与列表连接起来。
  • 我明白了,谢谢你的反馈,这是我第一次来这里堆栈溢出所以我很困惑如何输入我的代码!

标签: regex xpath web-crawler slice href


【解决方案1】:

这里好像有错误:

t = "https://www.imdb.com"+ urls

应该是:

t = "https://www.imdb.com"+ t

【讨论】:

    【解决方案2】:

    这是一个使用 IMDB 的工作示例。我们从起始页面中提取每个推荐的 url。在获得@href 属性(存储在列表中)后,我们将带有+ 运算符的url 的开头粘贴到循环中。

    from lxml import html
    import requests
    page = requests.get('https://www.imdb.com/title/tt0111161/')
    
    tree = html.fromstring(page.content)
    movie_recs = tree.xpath('//div[@class="rec_overlay"]/following::a[1]/@href')
    urls =["https://www.imdb.com" + el for el in movie_recs]
    print (urls)
    

    输出:

    【讨论】:

    • 非常感谢,我们的教授最终告诉了我们答案,而且他的方式太长而且令人讨厌!你是一个救生员,我能够以这种方式与全班分享。
    • 很高兴我能帮上忙。如果您的问题得到解决,请随时将我的答案标记为已接受。继续成功!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-15
    • 2011-02-18
    • 2020-12-12
    • 1970-01-01
    相关资源
    最近更新 更多