我正在做的一门课程,需要我用BeautifulSoup解析这个:http://python-data.dr-chuck.net/known_by_Fikret.html
说明如下:找到位置3的链接(名字是1)。按照该链接。重复此过程4次。答案就是您检索到的姓氏。
这是我目前拥有的代码:
import urllib.request, urllib.parse, urllib.error
from bs4 import BeautifulSoup
import re
url = input('Enter - ')
html = urllib.request.urlopen(url).read()
soup = BeautifulSoup(html, 'html.parser')
count = int(input('Enter count: '))
pos = int(input('Enter position: ')) - 1
urllist = list()
taglist = list()
tags = soup('a')
for i in range(count):
for tag in tags:
taglist.append(tag)
url = taglist[pos].get('href', None)
print('Retrieving: ', url)
urllist.append(url)
print('Last URL: ', urllist[-1])
以下是我的输出:
Retrieving: http://python-data.dr-chuck.net/known_by_Fikret.html
Retrieving: http://python-data.dr-chuck.net/known_by_Montgomery.html
Retrieving: http://python-data.dr-chuck.net/known_by_Montgomery.html
Retrieving: http://python-data.dr-chuck.net/known_by_Montgomery.html
Retrieving: http://python-data.dr-chuck.net/known_by_Montgomery.html
Last URL: http://python-data.dr-chuck.net/known_by_Montgomery.html
下面是我应该得到的输出:
Retrieving: http://python-data.dr-chuck.net/known_by_Fikret.html
Retrieving: http://python-data.dr-chuck.net/known_by_Montgomery.html
Retrieving: http://python-data.dr-chuck.net/known_by_Mhairade.html
Retrieving: http://python-data.dr-chuck.net/known_by_Butchi.html
Retrieving: http://python-data.dr-chuck.net/known_by_Anayah.html
Last URL: http://python-data.dr-chuck.net/known_by_Anayah.html
我已经在这方面工作了一段时间,但我仍然不能让代码正确循环。我是新的编码,我只是寻找一些帮助,以指出我在正确的方向。谢谢。
9条答案
按热度按时间yqkkidmi1#
试试这个办法:
zte4gxcn2#
c6ubokkw3#
您在同一个
pos
位置多次获取链接。使用i
循环计数器获取偏移量,替换:与:
whlutmcx4#
您没有得到正确答案的原因如下:您不打开链接。
在第一页找到正确的url后,你必须用urllib.request.urlopen(URL).read()打开你找到的url,并在那里寻找新的链接。你必须重复三次。我建议用while循环来完成这个任务。
下面的代码可以实现这个目的:
smtd7mpg5#
试试这个:
这就是我的输出:
kjthegm66#
atmip9wb7#
kuuvgm7e8#
bhmjp9jg9#