首页 > 其他分享 >这个网络爬虫代码,拿到数据之后如何存到csv文件中去?

这个网络爬虫代码,拿到数据之后如何存到csv文件中去?

时间:2024-04-18 22:55:28浏览次数:24  
标签:xpath text resp 爬虫 headers 存到 csv data

大家好,我是皮皮。

一、前言

还是昨天的那个网络爬虫问题,大佬们,帮忙看看这个网络爬虫代码怎么修改?那个粉丝说自己不熟悉pandas,用pandas做的爬虫,虽然简洁,但是自己不习惯,想要在他自己的代码基础上进行修改,获取数据的代码已经写好了,就差存储到csv中去了。

他的原始代码如下:

import requests
from lxml import etree
import csv
import time
import pandas as pd 


def gdpData(page):
    url = f'https://www.hongheiku.com/category/gdjsgdp/page/{page}'
    headers ={'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/109.0.0.0 Safari/537.36'}
    resp = requests.get(url,headers = headers)
# print(resp.text)
    data(resp.text)
file = open('data.csv',mode='a',encoding='utf-8',newline='')
csv_write=csv.DictWriter(file,fieldnames=['排名','地区','GDP','年份'])
csv_write.writeheader()
def data(text):
    e = etree.HTML(text)
    lst = e.xpath('//*[@id="tablepress-48"]/tbody/tr[@class="even"]')
    for l in lst:
        no = l.xpath('./td[1]/center/span/text()')
        name = l.xpath('./td[2]/a/center/text()')
        team = l.xpath('./td[3]/center/text()')  
        year = l.xpath('./td[4]/center/text()')
        data_dict = {
            '排名':no,
            '地区':name,
            'GDP':team,
            '年份':year
        }
        print(f'排名:{no} 地区:{name} GDP:{team} 年份:{year} ')
        csv_write.writerow(data_dict)
file.close()
url = 'https://www.hongheiku.com/category/gdjsgdp'
headers ={'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/109.0.0.0 Safari/537.36'}
resp = requests.get(url,headers = headers)
# print(resp.text)
data(resp.text)
e = etree.HTML(resp.text)
#//*[@id="tablepress-48"]/tbody/tr[192]/td[3]/center
count = e.xpath('//div[@class="pagination pagination-multi"][last()]/ul/li[last()]/span/text()')[0].split(' ')[1]
for index in range(int(count) - 1):
    gdpData(index + 2)

二、实现过程

这里粉丝给了一瓶冰红茶的费用,一个热心市民给了一份代码,在他的代码基础上进行修改的,代码如下:

import requests
from lxml import etree
import csv
import time
import pandas as pd


def gdpData(page):
    url = f'https://www.hongheiku.com/category/gdjsgdp/page/{page}'
    headers ={'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/109.0.0.0 Safari/537.36'}
    resp = requests.get(url,headers = headers)
# print(resp.text)
    data(resp.text)

def data(text):
    file = open('data.csv', mode='a', encoding='utf-8', newline='')
    csv_write = csv.DictWriter(file, fieldnames=['排名', '地区', 'GDP', '年份'])
    csv_write.writeheader()
    e = etree.HTML(text)
    lst = e.xpath('//*[@id="tablepress-48"]/tbody/tr[@class="even"]')
    for l in lst:
        no = ''.join(l.xpath('./td[1]/center/span/text()'))
        name = ''.join(l.xpath('./td[2]/a/center/text()')[0])
        team = ''.join(l.xpath('./td[3]/center/text()'))
        year = ''.join(l.xpath('./td[4]/center/text()'))
        data_dict = {
            '排名':no,
            '地区':name,
            'GDP':team,
            '年份':year
        }
        print(f'排名:{no} 地区:{name} GDP:{team} 年份:{year} ')
        csv_write.writerow(data_dict)
    file.close()

url = 'https://www.hongheiku.com/category/gdjsgdp'
headers ={'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/109.0.0.0 Safari/537.36'}
resp = requests.get(url,headers = headers)
# print(resp.text)
data(resp.text)

e = etree.HTML(resp.text)
#//*[@id="tablepress-48"]/tbody/tr[192]/td[3]/center
count = e.xpath('//div[@class="pagination pagination-multi"][last()]/ul/li[last()]/span/text()')[0].split(' ')[1]
for index in range(int(count) - 1):
    gdpData(index + 2)

代码运行之后,数据就存储到csv中去了。

image.png

顺利地解决了粉丝的问题!

三、总结

大家好,我是皮皮。这篇文章主要盘点了一个Python网络爬虫后数据存储的问题,文中针对该问题,给出了具体的解析和代码实现,帮助粉丝顺利解决了问题。

最后感谢粉丝【蓝桉】提问,感谢【热心市民】给出的思路和代码解析,感谢【eric】等人参与学习交流。

标签:xpath,text,resp,爬虫,headers,存到,csv,data
From: https://www.cnblogs.com/dcpeng/p/18144709

相关文章

  • Python-Web-爬虫秘籍(三)
    PythonWeb爬虫秘籍(三)原文:zh.annas-archive.org/md5/6ba628f13aabe820a089a16eaa190089译者:飞龙协议:CCBY-NC-SA4.0第七章:执行词形还原如何做一些过程,比如我们将使用的过程,需要额外下载它们用于执行各种分析的各种数据集。可以通过执行以下操作来下载它们:安装NLTK......
  • bs4爬虫解析
    记录使用bs4解析网页的基本方法,,完整使用文档可见bs4使用文档安装bs4pipinstallbs4创建beautifulSoup对象frombs4importBeautifulSoupsoup=BeautifulSoup(open("index.html"))soup=BeautifulSoup("<html>data</html>")soup=BeautiFulSouo(res)可以传入字符串,......
  • 爬虫-xpath解析
    你好一、xpath解析原理实例化一个etree的对象,且需要将被解析的页面源码数据加载到该对象中调用etree对象中的xpath方法结合着xpath表达式实现标签的定位和内容的捕获使用lxml模块1.1实例化一个etree对象将本地的html文档中的源码数据加载到etree对象中:etree.parse(fil......
  • python爬虫使用selenium
    由于selenium更各版本用法不一,本文使用的环境是selenium4.13,python3.11.0,不同环境可能失效忽略这一行安装pipinstallselenium安装驱动chrome浏览器谷歌驱动官网下载地址如果你的谷歌是最新版(在设置-关于Chrome查看版本),直接前往最新版下载地址你还可以访问这个json文件......
  • gevent实现协程爬虫
    这里只供基础的爬虫需求,协程是什么和gevent进阶用法就不赘述了下载pipinstallgevent基本流程1.打补丁打补丁的意思是使用gevent的monkey类将python的一些标准库函数的阻塞调用都改成协作式的,这部分不懂可以不用管,在你的代码上固定下面两行就好。fromgeventimportmonke......
  • csharp selenium HtmlAgilityPack 爬虫 网页解析 微信公众号
    Wechat.Crawler/App/App.csproj<ProjectSdk="Microsoft.NET.Sdk"><ItemGroup><ProjectReferenceInclude="..\Blog\Blog.csproj"/></ItemGroup><ItemGroup><NoneUpdate="nlog.config&......
  • 爬虫入门
    爬豆瓣importrequestshead={"User-Agent":"Mozilla/5.0(WindowsNT10.0;Win64;x64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/98.0.4758.139Safari/537.36"}#修改请求头,伪装成浏览器#response=requests.get("http://books.toscrape.com/",h......
  • Python爬虫学习
    基础语法字符串单引号双引号都行,是为了打印出引号才设计出两种的s1='"haha"'s2="'haha'"print(s1)print(s2)#结果是:"haha"'haha'事实上就近匹配,比如s=''haha''会被解析成前面俩一对后面俩一对s='''haha&......
  • 14--爬虫回顾和重点经验
    01.浏览器#一个网页的加载全过程1.服务器端渲染html的内容和数据在服务器进行融合.在浏览器端看到的页面源代码中.有你需要的数据2.客户端(浏览器)渲染html的内容和数据进行融合是发生在你的浏览器上的.这个过程一般通过脚本来完成(javascript)我们......
  • GB标准文档爬虫下载程序
    """author:babyfengfjx"""importrequestsimportrefromtimeimportsleepfrombs4importBeautifulSoupimportshelveheaders={"Accept":"image/avif,image/webp,image/apng,image/svg+xml,image/*,*/*;q=0.8&......