python爬虫(二)lxml.etree的使用(五分钟爬取大学生兼职网)

所有用到的库和安装方式

需要安装requests模块和lxml模块
利用pip安装

pip install requests
pip install lxml 

三分钟解决lxml

关于requests库的使用我在上一篇文章上写了所以在这里不多做赘述
这里lxml我们用到它的etree库
用法如下:
首先我们先需要找到我们要爬取的网站https://www.dxsjz.com/part/注意此时我们滑到最低端
选择下一页,再选择下一页
https://www.dxsjz.com/part/page_2.html
https://www.dxsjz.com/part/page_3.html
对比两次链接可以发现这两个url只有最后有区别那么有理由猜测第一页除了是https://www.dxsjz.com/part/还是https://www.dxsjz.com/part/page_1.html

import requests
for num in range(100):   
    r = requests.get("https://www.dxsjz.com/part/page_%d.html"%(num+1))

这里通过循环可以爬取多个页面的内容
在此基础之下开始使用lxml

import requests
from lxml import etree 
for num in range(100):   
    r = requests.get("https://www.dxsjz.com/part/page_%d.html"%(num))
    html = etree.HTML(r.text)

建立一个etree对象,然后就可以调用xpath
我们打开链接按下F12进入开发者模式
图1
点击开发者模式左上角的的鼠标图标然后点击要爬取得内容即可看到右边给了html相应的定位
图2
定位的地方右击选择Copy Xpath即可拷贝下xpath路径

	html.xpath("/html/body/div[5]/div[2]/div[3]/div[1]/a"))

通过这一行就可以提取一个列表,列表里有一个对象,我们通过索引的方式把它取出来并且通过.text属性获取内容

	html.xpath("/html/body/div[5]/div[2]/div[3]/div[1]/a"))[0].text

接下来通过其它的xpath我们可以找到规律
从而写出最终程序、

import requests	
from lxml import etree	
for num in range(100):  
    r = requests.get("https://www.dxsjz.com/part/page_%d.html"%(num))
    html = etree.HTML(r.text)
    with open("大学生兼职网%d.txt"%(num),'w') as f: 
        for i in range(10):
            try:
                html.xpath("/html/body/div[5]/div[2]/div[%d]/div[1]/span"%(i+3))[0].text
            except:
                f.write(html.xpath("/html/body/div[5]/div[2]/div[%d]/div[1]/a"%(i+3))[0].text)
                f.write('\n')
                f.write(html.xpath("/html/body/div[5]/div[2]/div[%d]/div[2]/span[1]"%(i+3))[0].text)
                f.write('\n')
                f.write(html.xpath("/html/body/div[5]/div[2]/div[%d]/div[2]/span[2]"%(i+3))[0].text)
                f.write('\n')
            else:
                f.write(html.xpath("/html/body/div[5]/div[2]/div[%d]/div[2]/a"%(i+3))[0].text)
                f.write('\n')
                f.write(html.xpath("/html/body/div[5]/div[2]/div[%d]/div[3]/span[1]"%(i+3))[0].text)
                f.write('\n')
                f.write(html.xpath("/html/body/div[5]/div[2]/div[%d]/div[3]/span[2]"%(i+3))[0].text)
                f.write('\n')
发布了6 篇原创文章 · 获赞 2 · 访问量 573

猜你喜欢

转载自blog.csdn.net/qq_42679566/article/details/103331349