import requests
#获取网页内容
def get_page(url):
#请求头用来表示用户身份的(像上学期的那个就会遇到404的那种情况这里可以解决)
headers={'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.9 Safari/537.36'}
try:
r=requests.get(url,headers=headers)
r.raise_for_status()#异常处理,200则为正常
r.encoding='utf-8'#从服务器返回的网页内容猜测编码方式,但是可以查,一般为utf-8
return r.json()
except:
return ""
import pandas as pd
def parse_page(data_json):
pagebook=data_json['data']['data']
bookdata=[]
for j in pagebook:
temp={}
temp["书名"]=j["bookName"]
temp["作者"]=j["author"]
temp["ISBN"]=j["isbn"]
temp["价格"]=j["price"]
bookdata.append(temp)
result=pd.DataFrame(bookdata)
return result
#数据存储
import os
def save_file(data_df,filename):
#data_df.to_excel("G:\\a大二第二学期\\数据采集与预处理\\作业\\人民邮电出版社新书信息.xlsx",index=False)#index=False表示不到处行序号,而且注意“\\”
#print("恭喜你"+filename+"保存成功啦!" )
columns=['书名','作者','ISBN','价格']
if os.path.exists('人民邮电出版社书籍信息.csv'):
data_df.to_csv('人民邮电出版社书籍信息.csv',index=False,columns=columns,encoding='gbk',mode='a',header=False)
else:
data_df.to_csv('人民邮电出版社书籍信息.csv',index=False,columns=columns,encoding='gbk',header=True)
print("恭喜你"+filename+"保存成功啦!" )
#主函数
if __name__ == '__main__':
url='https://www.ptpress.com.cn/bookinfo/getBookListForWSNewBook?rows=9&'
begin=int(input("请输入开始爬取的页码:"))
end=int(input("请输入结束爬取的页码:"))
for i in range(begin,end+1):
full_url=url+'page={}'.format(i)
filename='第{}页'.format(i)
html=get_page(full_url)
allbookdata=parse_page(html)
save_file(allbookdata,filename)