| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2431 人关注过本帖, 1 人收藏
标题:想获取网站前5页信息,但始终只能获取最后一页的内容,如何修改?谢谢!
只看楼主 加入收藏
nicon
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2019-8-22
结帖率:0
收藏(1)
已结贴  问题点数:20 回复次数:8 
想获取网站前5页信息,但始终只能获取最后一页的内容,如何修改?谢谢!
各位前辈,我根据教程,学习了如何取得第一页的网页信息。之后想尝试获取多页信息。但运行后,始终只能得到最后一页的内容。请问这个时候我应该如何处理?谢谢!

程序代码:
import urllib.request
import re,xlwt

def get_content():
    for i in range(1, 5):
        url = 'https://web.' + str(i)
        a = urllib.request.urlopen(url)
        html = a.read()
        html = html.decode('utf-8')
        # html = get_content()
        #print(html,i)
    return (html)

def get():
    html=get_content()
    reg=('class="chengshi_wz">.*?title="(.*?)".*?class="chengshi_wz_m">(.*?)</div>.*?<div class="chengshi_wz_f">(.*?)</div>',re.S)
    items=re.findall(reg,html)
    #items = items.decode('utf-8')
    #print(items)
    return(items)


#创建表格
def excel_write(items):
    newtable='test.xls' #文件名称
    wb=xlwt.Workbook(encoding='utf-8') #创建excel文件
    ws=wb.add_sheet('test1') #创建sheet名称
    headData=['新闻标题','摘要','作者和时间']
    for colnum in range(0,3):
        ws.write(0,colnum,headData[colnum],xlwt.easyxf('font:bold on')) #0代表行,colum代表列,后面的是数据


    index=1
    for item in items:#新闻信息
        for i in range(0,3):
            #print (item[i])
            ws.write(index,i,item[i])#index代表行,i代表列
        index+=1
        wb.save(newtable)


if __name__=="__main__": #判断文件入口
    items=get()
    excel_write(items)


[此贴子已经被作者于2019-8-22 13:37编辑过]

搜索更多相关主题的帖子: 获取 信息 内容 for html 
2019-08-22 09:49
TysonKoothra
Rank: 5Rank: 5
等 级:职业侠客
威 望:7
帖 子:71
专家分:374
注 册:2018-10-21
收藏
得分:10 
当你想获取网站前5页信息时,你改动了程序哪里的代码。
2019-08-22 13:08
nicon
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2019-8-22
收藏
得分:0 
回复 2楼 TysonKoothra
你好。谢谢帮助。
我在第一部分增加了下面的红字内容
def get_content():
    for i in range(1, 5):
        url = 'https://web.' + str(i)
        a = urllib.request.urlopen(url)
        html = a.read()
        html = html.decode('utf-8')
        # html = get_content()
        #print(html,i)
    return (html)
2019-08-22 13:40
TysonKoothra
Rank: 5Rank: 5
等 级:职业侠客
威 望:7
帖 子:71
专家分:374
注 册:2018-10-21
收藏
得分:0 
你应该把循环放到if __name__=="__main__":,然后通过参数把页码传到get_content 函数里面
程序代码:
if __name__=="__main__":
    for i in range(1, 6):
        items=get(i)
        excel_write(items)

另外 get_content这么写。
程序代码:
def get_content(i):
    url = 'https://web.' + str(i)
    a = urllib.request.urlopen(url)
    html = a.read()
    html = html.decode('utf-8')
    return (html)

get 应该这么写
程序代码:
def get(i):
    html=get_content(i)
    reg=('class="chengshi_wz">.*?title="(.*?)".*?class="chengshi_wz_m">(.*?)</div>.*?<div class="chengshi_wz_f">(.*?)</div>',re.S)
    items=re.findall(reg,html)
    #items = items.decode('utf-8')
    #print(items)
    return(items)
2019-08-22 13:53
nicon
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2019-8-22
收藏
得分:0 
回复 4楼 ljc2020
谢谢答复。
最近刚开始学python,想从工作需求入手,还在依葫芦画瓢的阶段。。你提示的我后续学一下。
2019-08-22 13:59
nicon
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2019-8-22
收藏
得分:0 
回复 5楼 TysonKoothra
谢谢答复,我之后按照你说的修改看看。。谢谢!
2019-08-22 13:59
nicon
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2019-8-22
收藏
得分:0 
回复 5楼 TysonKoothra
你好,我按照你的指导,修改了以后,运行成功了,但还是只能获取一页的信息呢。是什么地方我没有调整对吗?
程序代码:
import urllib.request
import re,xlwt

def get_content(i):
    url = 'https://web.' + str(i)
    a = urllib.request.urlopen(url)
    html = a.read()
    html = html.decode('utf-8')
    # html = get_content()
    #print(html,i)
    return (html)

def get(i):
    html=get_content(i)
    reg=('class="chengshi_wz">.*?title="(.*?)".*?class="chengshi_wz_m">(.*?)</div>.*?<div class="chengshi_wz_f">(.*?)</div>',re.S)
    items=re.findall(reg,html)
    #items = items.decode('utf-8')
    #print(items)
    return(items)


#创建表格
def excel_write(items):
    newtable='test.xls' #文件名称
    wb=xlwt.Workbook(encoding='utf-8') #创建excel文件
    ws=wb.add_sheet('test1') #创建sheet名称
    headData=['新闻标题','摘要','作者和时间']
    for colnum in range(0,3):
        ws.write(0,colnum,headData[colnum],xlwt.easyxf('font:bold on')) #0代表行,colum代表列,后面的是数据


    index=1
    for item in items:#新闻信息
        for i in range(0,3):
            #print (item[i])
            ws.write(index,i,item[i])#index代表行,i代表列
        index+=1
        wb.save(newtable)


if __name__=="__main__": #判断文件入口
    for i in range(1,6):
        items=get(i)
        excel_write(items)
2019-08-22 18:45
TysonKoothra
Rank: 5Rank: 5
等 级:职业侠客
威 望:7
帖 子:71
专家分:374
注 册:2018-10-21
收藏
得分:0 
这次是因为都写到test.xls 这个文件里面了。可以分别写到不同的文件里面。
程序代码:
if __name__=="__main__": #判断文件入口
    for i in range(1,6):
        items=get(i)
        excel_write(items, i) # 这里增加了一个参数i


程序代码:
def excel_write(items, i):
    newtable='test%d.xls' % i    # 使用不同的文件名
    ...
2019-08-22 20:41
nicon
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2019-8-22
收藏
得分:0 
回复 9楼 TysonKoothra
这次终于成功啦!谢谢版主!
2019-08-22 21:20
快速回复:想获取网站前5页信息,但始终只能获取最后一页的内容,如何修改?谢谢 ...
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.019759 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved