吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1439|回复: 10
收起左侧

[已解决] Python openpyxl问题 问下

[复制链接]
hahawangzi 发表于 2020-5-7 08:49
本帖最后由 hahawangzi 于 2020-5-12 15:54 编辑

print("这是第{}页内容".format(str(i)))
    r= requests.get(url+str(i)+".html",headers=headers)
    soup=BeautifulSoup(r.text,"lxml")
    table=soup.find('ul',class_="artlist clearfix")
    for j in table.find_all('li',class_="artlist_item"):
        dict["游戏名"]=j.find('h4',class_="artlist_title").getText()
        
        dict["网页地址"]=j.find('a',href=re.compile("/artdetail-\d.*")).get('href')
        #print(dict)
        r2 = requests.get(url2+dict["网页地址"],headers=headers)
        soup2=BeautifulSoup(r2.text,'lxml')
        table2 = soup2.find('article',class_="article_content")
        pan=re.compile("https://pan.baidu.com/.*")
        pan2=re.compile("提取码.*")
        pan3=re.compile(r'\xa0')     #为了去掉匹配后出现的\xa0 用re.sub方法替换掉空格
        for s in table2.find_all('p'):
            if len(re.findall(pan,str(s.text)))>0:
                dict["下载地址"]=str(re.sub(pan3,'',str(re.findall(pan,str(s.text)))))
            if len(re.findall(pan2,str(s.text)))>0:
                dict["ma"]=str(re.sub(pan3,'',str(re.findall(pan2,str(s.text)))))
                wb=Workbook()
                ws=wb.active
                sheet = wb.create_sheet("switch",0)
               
                sheet.append([dict.get("游戏名"),dict.get("下载地址"),dict.get("ma")])
                    
                print(dict)
        wb.save("switch1.xlsx")
        print("保存成功") 捕获.JPG
  想问下  上图出现怎么多爬出来的数据, sheet.append([dict.get("游戏名"),dict.get("下载地址"),dict.get("ma")]) 但是最后保存的数据,为什么只有最后最后一行 只有绝体绝命4的下载地址 游戏名
我明明是又循环的呀,用文本保存就没问题,这是什么原因啊?

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

2014晴天 发表于 2020-5-7 09:04
[Python] 纯文本查看 复制代码
    r= requests.get(url+str(i)+".html",headers=headers)
    soup=BeautifulSoup(r.text,"lxml")
    table=soup.find('ul',class_="artlist clearfix")

#这几句可以直接用Pandas的read_html完成
zjkhcjq 发表于 2020-5-7 09:11
一行一行写
[Python] 纯文本查看 复制代码
datalist = [dict.get("游戏名"),dict.get("下载地址"),dict.get("ma")]

for col in range(1,4):
    sheet.cell(column=col,row=row,value=datalist[col-1])

#row 可以定义一个静态变量static
 楼主| hahawangzi 发表于 2020-5-7 09:52
2014晴天 发表于 2020-5-7 09:04
[mw_shl_code=python,true]
    r= requests.get(url+str(i)+".html",headers=headers)
    soup=Beautif ...

没学过这个模块 能简单写个例子吗 我去学一下
 楼主| hahawangzi 发表于 2020-5-7 09:53
zjkhcjq 发表于 2020-5-7 09:11
一行一行写
[mw_shl_code=python,true]datalist = [dict.get("游戏名"),dict.get("下载地址"),dict.get("m ...

就是先把字典,做成一个list 然后一行一行的写进去啊?column=col,row=row 这里我不太懂,为什么要怎么复值一下?
 楼主| hahawangzi 发表于 2020-5-7 10:08
2014晴天 发表于 2020-5-7 09:04
[mw_shl_code=python,true]
    r= requests.get(url+str(i)+".html",headers=headers)
    soup=Beautif ...

我这个网页里 不是表格形数据 也能用啊
rsnodame 发表于 2020-5-7 11:09
本帖最后由 rsnodame 于 2020-5-7 11:13 编辑

你这段代码中,先循环获取了游戏名和网址,接着对该网址内的下载链接再做了次循环,也就是循环里套了一个循环。
而你要无论是创建或是保存xls文件,必须是要放在最外层的循环——也就是游戏名和网址的循环——之外的。
请你仔细检查代码,看看创建Workbook()以及新建sheet,还有这句wb.save("switch1.xlsx")被放在了哪里
ymhld 发表于 2020-5-7 20:21
         wb=Workbook()
                ws=wb.active
                sheet = wb.create_sheet("switch",0)

把这部分放在循环的前面,重复建工作表,把前面的数据冲没了
 楼主| hahawangzi 发表于 2020-5-8 10:02
ymhld 发表于 2020-5-7 20:21
wb=Workbook()
                ws=wb.active
                sheet = wb.create_sheet("switc ...

多谢提醒!!!!!!!!!!! 一下就看出来了!!!厉害!!!
 楼主| hahawangzi 发表于 2020-5-8 10:03
rsnodame 发表于 2020-5-7 11:09
你这段代码中,先循环获取了游戏名和网址,接着对该网址内的下载链接再做了次循环,也就是循环 ...

对的 对的,看到了我才想通了,原来是怎么回事。。。。。。。。。。。以后还要在仔细点
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-26 16:37

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表