分页报错了。
import requestsfrom lxml import etree
import os
if not os.path.exists('./jianlimoban'):
os.mkdir('./jianlimoban')
#获取url
url = 'http://sc.chinaz.com//jianli//free.html'
#UA伪装
headers = {
'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.75 Safari/537.36'
}
#网站分页操作
for page in range(1,5):
if page==1:
new_nrl = 'http://sc.chinaz.com//jianli//free.html'
else:
new_nrl=format(url%page)
#向网页发起请求
response = requests.get(url=new_nrl,headers=headers)
response.encoding ='utf-8'
page_text = response.text
#网页解析
tree = etree.HTML(page_text)
div_list = tree.xpath('//div[@id="main"]/div/div')
#for循环倒出每一个的详情连接
for div in div_list:
detail_url = div.xpath('./a/@href')
#print(detail_url)
detail_name = div.xpath('./a/img/@alt')+'.rar'
#print(detail_name)
response = requests.get(url=detail_url,headers=headers)
response.encoding='utf-8'
detail_data = response.text
#实例化datail_data
tree2 = etree.HTML(detail_data)
downloda_list = tree2.xpath('//div[@class="down_wrap"]/div/ul/li/a/@href')
downloda_data = requests.get(url=downloda_list,headers=headers)
downloda_data.encoding = 'utf-8'
downloda_data = downloda_data.content
filepath ='./jianlimoban'+detail_name
with open(filepath,'wb') as fp:
fp.write(downloda_data)
print(detail_name,'爬取成功!!!') 本帖最后由 疾风怪盗 于 2020-10-22 18:51 编辑
new_nrl='http://sc.chinaz.com//jianli//free_{}.html'.format(page)
你是咋构造url的?{:10_284:}
filepath ='./jianlimoban/'+detail_name
还有这里修改下,否则没保存进文件夹 这句:new_nrl = format(url % page)
url带入后,里面没有可格式化的字段,你需要这样:
for page in range(1, 5):
if page == 1:
new_nrl = 'http://sc.chinaz.com//jianli//free.html'
else:
new_nrl = f'http://sc.chinaz.com//jianli//free_{page}.html'
疾风怪盗 发表于 2020-10-22 18:50
你是咋构造url的?
else:
# 拼接从第二页开始往后的url
new_url = format(url % page
这样拼接的方式不行吗?
孝白歌 发表于 2020-10-22 18:55
else:
# 拼接从第二页开始往后的url
new_url = format(url % page
Python2.6 开始,新增了一种格式化字符串的函数 str.format(),它增强了字符串格式化的功能。
基本语法是通过 {} 和 : 来代替以前的 % 。
format 函数可以接受不限个参数,位置可以不按顺序。
实例
>>>"{} {}".format("hello", "world") # 不设置指定位置,按默认顺序
'hello world'
>>> "{0} {1}".format("hello", "world")# 设置指定位置
'hello world'
>>> "{1} {0} {1}".format("hello", "world")# 设置指定位置
'world hello world' 疾风怪盗 发表于 2020-10-22 18:56
Python2.6 开始,新增了一种格式化字符串的函数 str.format(),它增强了字符串格式化的功能。
基本语 ...
这样啊,好的。谢谢了
孝白歌 发表于 2020-10-22 19:00
这样啊,好的。谢谢了
如果问题解决了,请设个最佳,把求助帖子关了
页:
[1]