‘’’
    目标: https://aspx.sc.chinaz.com/query.aspx?keyword=%E5%85%8D%E8%B4%B9&issale=&classID=864&page=1
    爬取要求:
    1、翻页获取到页面的源码
    2、用xpath解析数据,获取到页面所有模板名字和下载链接
    3、把数据保存到csv
    分析网站:
    第一页:https://aspx.sc.chinaz.com/query.aspx?keyword=%E5%85%8D%E8%B4%B9&issale=&classID=864&page=1
    第二页:https://aspx.sc.chinaz.com/query.aspx?keyword=%E5%85%8D%E8%B4%B9&issale=&classID=864&page=2
    第三页:https://aspx.sc.chinaz.com/query.aspx?keyword=%E5%85%8D%E8%B4%B9&issale=&classID=864&page=3
    第四页:https://aspx.sc.chinaz.com/query.aspx?keyword=%E5%85%8D%E8%B4%B9&issale=&classID=864&page=4
    第五页:https://aspx.sc.chinaz.com/query.aspx?keyword=%E5%85%8D%E8%B4%B9&issale=&classID=864&page=5
    所以url可以写成:f’https://aspx.sc.chinaz.com/query.aspx?keyword=%E5%85%8D%E8%B4%B9&issale=&classID=864&page={page}
    变量page可以从1到5循环取值
    ‘’’

    1. import requests
    2. import csv
    3. from lxml import etree
    4. lists = [] # 储存爬取下来的数据,以便后面的储存
    5. for page in range(1,6):
    6. url = f'https://aspx.sc.chinaz.com/query.aspx?keyword=%E5%85%8D%E8%B4%B9&issale=&classID=864&page={page}'
    7. html = requests.get(url)
    8. html_list = etree.HTML(html.text)
    9. titles = html_list.xpath("//div[@class='main_list jl_main']/div/a/img/@alt")
    10. links = html_list.xpath("//div[@class='main_list jl_main']/div/a/@href")
    11. # 对titles,links进行遍历,以取出链接再次发送请求爬取下载链接
    12. for i in range(20):
    13. url1 = 'http:'+links[i] # 实例链接
    14. html1 = requests.get(url1)
    15. html1_list = etree.HTML(html1.text)
    16. link1 = html1_list.xpath("//div[@class='clearfix mt20 downlist']/ul/li/a/@href")[0]
    17. # 在这增加最下面的代码(title1 = titles[i].replace("免费下载", "") 和把下面一行的代码修改为:(lists.append([title1, link1])
    18. lists.append([titles[i], link1])
    19. #保存到jinli.csv
    20. with open("jianli.csv", "w", encoding='utf-8', newline='') as f:
    21. wt = csv.writer(f)
    22. wt.writerow(['title','link'])
    23. wt.writerows(lists)
    24. print('保存成功,任务完成!')

    总结一下:
    能省则省,连UA我也省了,还有就是xpath也一步到位,列表也只用一个,增加了一个打印输出(不然也不知道什么时候完成了)做到了21行,记录一下!
    (先前在找下载链接时,看有12个下载链接,没注意看,全搞下来,后再仔细一下,原来都是一样的!)
    附:(jianli.csv)
    image.pngimage.png
    看上图,是不是明显偷懒了(title,哪里明显多了:免费下载这几个字),好,增加一行代码就可以了….

    1. title1 = titles[i].replace("免费下载", "")
    2. lists.append([title1, link1])

    看效果下图,到这就完美了!
    image.png