家好,我是皮皮。
还是昨天的那个网络爬虫问题,大佬们,帮忙看看这个网络爬虫代码怎么修改?那个粉丝说自己不熟悉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中去了。
顺利地解决了粉丝的问题!
大家好,我是皮皮。这篇文章主要盘点了一个Python网络爬虫后数据存储的问题,文中针对该问题,给出了具体的解析和代码实现,帮助粉丝顺利解决了问题。
最后感谢粉丝【蓝桉】提问,感谢【热心市民】给出的思路和代码解析,感谢【eric】等人参与学习交流。
天学习python的CSV文件内容转换为HTML输出,并记录学习过程欢迎大家一起交流分享。
首先看我桌面的person_info.csv文件,内容如下:
接下来新建一个python文件命名为py3_csv2html.py,在这个文件中进行操作代码编写:
import csv ####将csv文件中的名字列提出来显示到html中 #定义html输出变量 html_output='' #定义list列表存放名字 names=[] encode='UTF-8 sig' with open('person_info.csv','r',encoding=encode) as csv_file: csv_data=csv.reader(csv_file) #根据上图数据的格式,我们不需要 #标题头和第一行非正常数据 #使用next()跳过去 #next()方法以后学会说到 #可以看下面的截图就明白了 next(csv_data) next(csv_data) for line in csv_data: #将文件中名字添加到names中去 #这里使用fstring代替了string的format方式 names.append(f"{line[0]}") html_output +=f"<p>文件中一共有{len(names)}个人。</p>" html_output +="\n<ul>" for name in names: html_output +=f"\n\t<li>{name}</li>" html_output +="\n</ul>" print(html_output) #*****以上使用csv的reader方式实现***** #大家可以根据上一篇文章中csv的第二种DictReader() #方式实现如上功能,这里就不做演示了。
解析person_info.csv中的数据,得到如下图:
这里我们不需要表头和第一行坏数据,所以使用两次next()。
以上代码运行得到的结果图:
今天初学python的CSV文件内容转换为HTML输出就到这里!
关注公号yale记
下面的是我的公众号二维码图片,欢迎关注。
资源链接:han-link.cn/4240.html
#妙笔生花创作挑战#
*请认真填写需求信息,我们会在24小时内与您取得联系。