【问题标题】:Read, extract href from anchor tags and scan tag for a particular value/position从锚标签中读取、提取href并扫描标签以查找特定的值/位置
【发布时间】:2020-11-08 19:33:14
【问题描述】:

我正在尝试从下面的数据文件中读取 HTML,从锚标签中提取 href= 值,扫描相对于列表中的名字处于特定位置的标签,点击该链接并重复该过程多次并报告我找到的姓氏:

(网址:http://py4e-data.dr-chuck.net/known_by_Emir.html

在第 18 位找到链接(名字是 1)。按照那个链接。重复此过程 7 次。答案是您检索的姓氏。 提示:您将加载的最后一页名称的第一个字符是:M

import urllib.request, urllib.parse, urllib.error
from bs4 import BeautifulSoup
import ssl

ctx = ssl.create_default_context()
ctx.check_hostname = False
ctx.verify_mode = ssl.CERT_NONE

url = input('Enter - ')
html = urllib.request.urlopen(url, context=ctx).read()
soup = BeautifulSoup(html, 'html.parser')

tags = soup('a')
for tag in tags:
    print(tag.get('href', None))

【问题讨论】:

  • 看起来这是分配给你的某种家庭作业。如果我能帮助你,你的老师/教授可以吗?
  • 用于 Coursera 的课程。我自己试了下还是搞不定,所以想把它贴在这里!我现在正在工作:P 不再在大学了......我希望!

标签: python url href


【解决方案1】:

你可以把整个事情放在一个循环中:

import urllib.request, urllib.parse, urllib.error
from bs4 import BeautifulSoup
import ssl

ctx = ssl.create_default_context()
ctx.check_hostname = False
ctx.verify_mode = ssl.CERT_NONE

url = 'http://py4e-data.dr-chuck.net/known_by_Emir.html'

for x in range(7):
    if x != 0:
        html = urllib.request.urlopen(tag, context=ctx).read()
    else:
        html = urllib.request.urlopen(url, context=ctx).read()

    soup = BeautifulSoup(html, 'html.parser')
    tag = soup.find_all('a')[17]['href']

print(tag)

输出:

http://py4e-data.dr-chuck.net/known_by_Maya.html

【讨论】:

  • 你能解释一下,它是范围(7)-这是什么意思?最后一行也一样 - 为什么是 17?是参考第17行吗?
  • range(7) :重复循环 7 次。 为什么是 17? - 17 是第 18 个元素的索引,也就是第 18 个链接
  • 对不起最后一件事-为什么我们重复了 7 次?为什么不是 6 个或超过 7 个?谢谢。
  • 你提到你想在你的问题中重复这个过程 7 次。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-03-04
  • 2015-03-10
  • 1970-01-01
  • 2019-11-30
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多