孝白歌 发表于 2020-10-22 18:44:10

分页报错了。

import requests
from 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:50:07

本帖最后由 疾风怪盗 于 2020-10-22 18:51 编辑

new_nrl='http://sc.chinaz.com//jianli//free_{}.html'.format(page)

你是咋构造url的?{:10_284:}

filepath ='./jianlimoban/'+detail_name
还有这里修改下,否则没保存进文件夹

suchocolate 发表于 2020-10-22 18:54:34

这句: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:55:30

疾风怪盗 发表于 2020-10-22 18:50
你是咋构造url的?




else:
            # 拼接从第二页开始往后的url
            new_url = format(url % page
这样拼接的方式不行吗?

疾风怪盗 发表于 2020-10-22 18:56:49

孝白歌 发表于 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 19:00:12

疾风怪盗 发表于 2020-10-22 18:56
Python2.6 开始,新增了一种格式化字符串的函数 str.format(),它增强了字符串格式化的功能。

基本语 ...

这样啊,好的。谢谢了

疾风怪盗 发表于 2020-10-22 19:40:40

孝白歌 发表于 2020-10-22 19:00
这样啊,好的。谢谢了

如果问题解决了,请设个最佳,把求助帖子关了
页: [1]
查看完整版本: 分页报错了。