爬虫——爬取网页数据存入表格

最近由于个人需要,从相关书籍以及网上资料进行爬虫自学,目标网址为http://mzj.beijing.gov.cn,对其内容进行整理筛选,存入excel格式。

首先是对表格的内容进行设置,编码格式定义为utf-8,添加一个sheet的表格,其中head为表头的内容,定义之后,利用sheet.write将表头内容写入。

book = xlwt.Workbook(encoding='utf-8')
sheet = book.add_sheet('ke_qq')
head = ['组织名称','登记证号','统一社会信用代码','业务主管单位','登记管理机关','社会组织类型','开办资金','业务范围','法定代表人','电话','地址','邮编','登记状态','成立日期','行业分类']#表头
for h in range(len(head)):
    sheet.write(0,h,head[h])    #写入表头

 爬取网页采用requests进行访问,利用BeautifulSoup进行解析。

response = requests.get(url, headers=headers)
soup = BeautifulSoup(response.text, 'html.parser', from_encoding='utf-8')

之后提取网页内容中有效字段,使用soup.stripped_strings去除其中的空格和空行内容。

str1 = []
    nice = []
    for wz in soup.stripped_strings:
        str1.append(repr(wz))
    k = len(str1)

最后,根据每个人不同的需要,对数据进行整理,在这里是使用insert、pop、append对数据进行一些调整。

完整代码如下:

# coding:utf-8
import requests
from bs4 import BeautifulSoup
import operator as op
import re
import xlwt

user_agent = 'Mozilla/4.0 (compatible;MSIE5.5;windows NT)'
headers = {'User-Agent': user_agent}
num=1
book = xlwt.Workbook(encoding='utf-8')
sheet = book.add_sheet('ke_qq')
head = ['组织名称','登记证号','统一社会信用代码','业务主管单位','登记管理机关','社会组织类型','开办资金','业务范围','法定代表人','电话','地址','邮编','登记状态','成立日期','行业分类']#表头
for h in range(len(head)):
    sheet.write(0,h,head[h])    #写入表头
for one in range(10001,17000):
    keyword = 10000000001
    keywords=keyword+one
    url = 'http://mzj.beijing.gov.cn/wssbweb/wssb/dc/orgInfo.do?action=seeParticular&orgId=0000' + str(keywords) + '&websitId=&netTypeId='
    response = requests.get(url, headers=headers)
    soup = BeautifulSoup(response.text, 'html.parser', from_encoding='utf-8')
    str1 = []
    nice = []
    for wz in soup.stripped_strings:
        str1.append(repr(wz))
    k = len(str1)
    if k>5:
        i = 1
        for content in str1:
            if i > 3:
                nice.append(content)
            i = i + 1
        try:
            # num=num+1
            if  op.eq(nice[4], '\'业务主管单位:\''):
                nice.insert(4, '无')
            if op.eq(nice[14], '\'法定代表人/负责人:\''):
                nice.insert(14, '无')
            if op.eq(nice[13], '\'活动地域:\''):
                nice.pop(13)
                nice.pop(13)
            if op.eq(nice[16], '\'电话:\''):
                nice.insert(16, '无')
            if op.eq(nice[18], '\'地址:\''):
                nice.insert(18, '无')
            if op.eq(nice[20], '\'邮编:\''):
                nice.insert(20, '无')
            if len(nice)>22:
                if op.eq(nice[22], '\'登记状态:\''):
                    nice.insert(22, '无')
            if len(nice) > 27:
                if op.eq(nice[27], '\'行业分类:\'') and len(nice) == 28:
                    nice.append('无')
                # if op.eq(nice[13], '\'活动地域:\''):
                #   nice.pop(13)
                #  nice.pop(13)
            if op.eq(nice[12], '\'元\''):
                nice[12] = '0'
            # print(nice)
            j = 0
            d = 0
            s = 0
            for data in nice:
                if j & 1 == 0:
                    s = j - d
                    sheet.write(num, s, data)
                    d += 1
                j += 1
            print(num)
            num += 1
        except:
            print('error'+num)

book.save('E:\WU\pyfile\shuju\save2\shuju2.xls')

其中网页地址中的keyword由于爬取网页的不同,可能采取方法有异。

发布了40 篇原创文章 · 获赞 14 · 访问量 1万+
展开阅读全文

Python爬虫抓取信息存储到excel表格后,怎么实行数据可视化

01-02

我用python爬去了起点中文网的一些信息,并且存储到excel中,现在想要实现数据可视化怎么写应该 import requests from lxml import etree from openpyxl import Workbook class Book(): def __init__(p): p.url = 'https://www.qidian.com/rank/hotsales?page={页数}' p.wb = Workbook() # class实例化 p.ws = p.wb.active # 激活工具表 p.ws.append(['书名', '作者', '类型', '连载状态']) # 添加对应的表头 def geturl(p): url = [p.url.format(页数 =i) for i in range(1,15)] return url def parse_url(p,url): response =requests.get(url,timeout = 5) return response.content.decode('utf-8','ignore') def get_list(p,html_str): html = etree.HTML(html_str) connect_list = [] lists = html.xpath("//div[@class='book-img-text']/ul/li//div[@class='book-mid-info']") for list in lists: item = {} item['书名'] = ''.join(list.xpath("./h4/a/text()")) item['作者'] = ''.join(list.xpath("./p[@class='author']/a[1]/text()")) item['类型'] = ''.join(list.xpath("./p[@class='author']/a[2]/text()")) item['连载状态'] = ''.join(list.xpath("./p[@class='author']/span/text()")) connect_list.append(item) return connect_list def save_list(p, connects): for connect in connects: p.ws.append([connect['书名'], connect['作者'], connect['类型'], connect['连载状态']]) print('保存小说信息成功') def run(p): url_list = p.geturl() for url in url_list: html_url =p.parse_url(url) connects = p.get_list(html_url) p.save_list(connects[:]) p.wb.save('book.xlsx') if __name__=='__main__': spider = Book() spider.run() 问答

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 大白 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览