从lis循环迭代

2024-05-14 19:29:41 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图迭代通过一个列表,以便获得一个网站,其中有多个网页每个子类别的一些链接。子类别中的第一个链接具有列表中的第一个数字(8),第二个链接具有6,依此类推。我的最终结果是这样的:

sublinks: 
0   https://messageboards.webmd.com/family-pregnancy/f/relationships/
1   https://messageboards.webmd.com/family-pregnancy/f/parenting/
2   https://messageboards.webmd.com/family-pregnancy/f/pets/
3   https://messageboards.webmd.com/family-pregnancy/f/pregnancy/

列出尝试在for循环中进行itarate的对象:[8、6、5、13、10、16、13、15、4、4、5、7、2、6、6、8、9、8、3、8、8、1、6、3、2、15、5、4、2、12、18、5、2]

import bs4 as bs
import urllib.request
import pandas as pd
import urllib.parse
import re


#source = urllib.request.urlopen('https://messageboards.webmd.com/').read()
source = urllib.request.urlopen('https://messageboards.webmd.com').read()
soup = bs.BeautifulSoup(source,'lxml')


df = pd.DataFrame(columns = ['link'],data=[url.a.get('href') for url in soup.find_all('div',class_="link")])
lists =[]
lists2=[]
lists3=[]
page_links = []


for i in range(0,33):
    link = (df.link.iloc[i])
    req = urllib.request.Request(link)
    resp = urllib.request.urlopen(req)
    respData = resp.read()
    temp1=re.findall(r'Filter by</span>(.*?)data-pagedcontenturl',str(respData))
    temp1=re.findall(r'data-totalitems=(.*?)data-pagekey',str(temp1))[0]
    pageunm=round(int(re.sub("[^0-9]","",temp1))/10)
    lists.append(pageunm)

for j in lists:
    for x in range(1, j+1):
        url_pages = link + '#pi157388622=' + str(j)
        page_links.append(url_pages)

第一次迭代的最终结果如下:

https://messageboards.webmd.com/family-pregnancy/f/relationships/#pi157388622=1
https://messageboards.webmd.com/family-pregnancy/f/relationships/#pi157388622=2
https://messageboards.webmd.com/family-pregnancy/f/relationships/#pi157388622=3
https://messageboards.webmd.com/family-pregnancy/f/relationships/#pi157388622=4
https://messageboards.webmd.com/family-pregnancy/f/relationships/#pi157388622=5
https://messageboards.webmd.com/family-pregnancy/f/relationships/#pi157388622=6
https://messageboards.webmd.com/family-pregnancy/f/relationships/#pi157388622=7
https://messageboards.webmd.com/family-pregnancy/f/relationships/#pi157388622=8

Tags: httpsimportrecomfordatarequestlink
1条回答
网友
1楼 · 发布于 2024-05-14 19:29:41

如果您的问题是无法使迭代从1变为初始列表中的数字(在代码示例之外),那么您可以尝试以下操作:

sub_links = [8, 6, 5, 13, 10, 16, 13, 15, 4, 4, 5, 7, 2, 6, 6, 8, 9, 8, 3, 8, 8, 1, 6, 3, 2, 15, 5, 4, 2, 12, 18, 5, 2]
for length in sub_links:
    for number in range(1, length + 1):
        print(number, end=' ')
    print()

这当前打印每行上您想要的所有数字。调整内部for循环体,将数字附加到链接上,就得到了所需的内容。你知道吗

如果你的问题是关于其他的东西,那么你需要更清楚-我建议你只包括不起作用的代码,并解释问题是什么。你知道吗

相关问题 更多 >

    热门问题