hahawangzi 发表于 2020-5-7 08:49

Python openpyxl问题 问下

本帖最后由 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()
                  
                print(dict)
      wb.save("switch1.xlsx")
      print("保存成功")
想问下上图出现怎么多爬出来的数据, sheet.append() 但是最后保存的数据,为什么只有最后最后一行 只有绝体绝命4的下载地址 游戏名
我明明是又循环的呀,用文本保存就没问题,这是什么原因啊?

2014晴天 发表于 2020-5-7 09:04


    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

一行一行写
datalist =

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

#row 可以定义一个静态变量static

hahawangzi 发表于 2020-5-7 09:52

2014晴天 发表于 2020-5-7 09:04

    r= requests.get(url+str(i)+".html",headers=headers)
    soup=Beautif ...

没学过这个模块 能简单写个例子吗 我去学一下

hahawangzi 发表于 2020-5-7 09:53

zjkhcjq 发表于 2020-5-7 09:11
一行一行写
datalist =

就是先把字典,做成一个list 然后一行一行的写进去啊?column=col,row=row 这里我不太懂,为什么要怎么复值一下?

hahawangzi 发表于 2020-5-7 10:08

2014晴天 发表于 2020-5-7 09:04

    r= requests.get(url+str(i)+".html",headers=headers)
    soup=Beautif ...

我这个网页里 不是表格形数据 也能用啊

rsnodame 发表于 2020-5-7 11:09

本帖最后由 rsnodame 于 2020-5-7 11:13 编辑

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

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
你这段代码中,先循环获取了游戏名和网址,接着对该网址内的下载链接再做了次循环,也就是循环 ...

对的 对的,看到了我才想通了,原来是怎么回事。。。。。。。。。。。以后还要在仔细点
页: [1] 2
查看完整版本: Python openpyxl问题 问下