网课地址:https://www.bilibili.com/video/BV1i54y1h75W?p=37
    分析:
    1、先获取网站首页信息

    1. #爬取猪八戒网站
    2. import requests
    3. if __name__=='__main__':
    4. headers={'User-Agent':'Mozilla/5.0 (iPhone; CPU iPhone OS 13_2_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0.3 Mobile/15E148 Safari/604.1'}
    5. #1、指定url
    6. url='https://shenzhen.zbj.com/search/f/?kw=saas'
    7. #2、发起请求 请求对应的url是携带参数的,并且请求过程中处理了参数
    8. response = requests.get(url=url,headers=headers)
    9. print(response.text)

    image.png
    2、拿到一堆服务商的div
    image.png
    再定位都某一个服务商的div,复制xapth得到:
    /html/body/div[6]/div/div/div[2]/div[5]/div[1]/div[1] 这个是一个div,我们要所有的div,就把[1]去掉
    image.png
    image.png

    1. #爬取猪八戒网站
    2. import requests
    3. from lxml import etree
    4. if __name__=='__main__':
    5. headers={'User-Agent':'Mozilla/5.0 (iPhone; CPU iPhone OS 13_2_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0.3 Mobile/15E148 Safari/604.1'}
    6. #1、指定url
    7. url='https://shenzhen.zbj.com/search/f/?kw=saas'
    8. #2、发起请求 请求对应的url是携带参数的,并且请求过程中处理了参数
    9. response = requests.get(url=url,headers=headers)
    10. # print(response.text)
    11. #解析
    12. html=etree.HTML(response.text)
    13. #拿到每一个服务商的div
    14. # divs=html.xpath("/html/body/div[6]/div/div/div[2]/div[5]/div[1]/div[1]")
    15. divs=html.xpath("/html/body/div[6]/div/div/div[2]/div[5]/div[1]/div")#找到一堆的div,把[1]去掉,就是所有的div
    16. print(divs) #打印所有的div

    3、然后找单个的服务商,获取价格字段

    1. #爬取猪八戒网站
    2. import requests
    3. from lxml import etree
    4. if __name__=='__main__':
    5. headers={'User-Agent':'Mozilla/5.0 (iPhone; CPU iPhone OS 13_2_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0.3 Mobile/15E148 Safari/604.1'}
    6. #1、指定url
    7. url='https://shenzhen.zbj.com/search/f/?kw=saas'
    8. #2、发起请求 请求对应的url是携带参数的,并且请求过程中处理了参数
    9. response = requests.get(url=url,headers=headers)
    10. # print(response.text)
    11. #解析
    12. html=etree.HTML(response.text)
    13. #拿到每一个服务商的div
    14. # divs=html.xpath("/html/body/div[6]/div/div/div[2]/div[5]/div[1]/div[1]")
    15. divs=html.xpath("/html/body/div[6]/div/div/div[2]/div[5]/div[1]/div")#找到一堆的div,把[1]去掉,就是所有的div
    16. # print(divs)#打印所有的div
    17. for div in divs:#找每一个服务商
    18. price=div.xpath("./div/div/a[2]/div[2]/div[1]/span[1]/text()") #找价格
    19. print(price)

    image.png
    image.png
    4、获取标题字段

    1. #爬取猪八戒网站
    2. import requests
    3. from lxml import etree
    4. if __name__=='__main__':
    5. headers={'User-Agent':'Mozilla/5.0 (iPhone; CPU iPhone OS 13_2_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0.3 Mobile/15E148 Safari/604.1'}
    6. #1、指定url
    7. url='https://shenzhen.zbj.com/search/f/?kw=saas'
    8. #2、发起请求 请求对应的url是携带参数的,并且请求过程中处理了参数
    9. response = requests.get(url=url,headers=headers)
    10. # print(response.text)
    11. #解析
    12. html=etree.HTML(response.text)
    13. #拿到每一个服务商的div
    14. # divs=html.xpath("/html/body/div[6]/div/div/div[2]/div[5]/div[1]/div[1]")
    15. divs=html.xpath("/html/body/div[6]/div/div/div[2]/div[5]/div[1]/div")#找到一堆的div,把[1]去掉,就是所有的div
    16. # print(divs)
    17. for div in divs:#找每一个服务商
    18. price=div.xpath("./div/div/a[2]/div[2]/div[1]/span[1]/text()") #找价格
    19. title=div.xpath("./div/div/a[2]/div[2]/div[2]/p/text()") #获取标题
    20. print(title)

    image.png
    image.png
    5、获取名称

    1. #爬取猪八戒网站
    2. import requests
    3. from lxml import etree
    4. if __name__=='__main__':
    5. headers={'User-Agent':'Mozilla/5.0 (iPhone; CPU iPhone OS 13_2_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0.3 Mobile/15E148 Safari/604.1'}
    6. #1、指定url
    7. url='https://shenzhen.zbj.com/search/f/?kw=saas'
    8. #2、发起请求 请求对应的url是携带参数的,并且请求过程中处理了参数
    9. response = requests.get(url=url,headers=headers)
    10. # print(response.text)
    11. #解析
    12. html=etree.HTML(response.text)
    13. #拿到每一个服务商的div
    14. # divs=html.xpath("/html/body/div[6]/div/div/div[2]/div[5]/div[1]/div[1]")
    15. divs=html.xpath("/html/body/div[6]/div/div/div[2]/div[5]/div[1]/div")#找到一堆的div,把[1]去掉,就是所有的div
    16. # print(divs)
    17. for div in divs:#找每一个服务商
    18. price=div.xpath("./div/div/a[2]/div[2]/div[1]/span[1]/text()") #找价格
    19. title=div.xpath("./div/div/a[2]/div[2]/div[2]/p/text()")
    20. com_name=div.xpath("./div/div/a[1]/div[1]/p/text()")
    21. print(com_name)

    image.png
    6、获取地理位置

    1. #爬取猪八戒网站
    2. import requests
    3. from lxml import etree
    4. if __name__=='__main__':
    5. headers={'User-Agent':'Mozilla/5.0 (iPhone; CPU iPhone OS 13_2_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0.3 Mobile/15E148 Safari/604.1'}
    6. #1、指定url
    7. url='https://shenzhen.zbj.com/search/f/?kw=saas'
    8. #2、发起请求 请求对应的url是携带参数的,并且请求过程中处理了参数
    9. response = requests.get(url=url,headers=headers)
    10. # print(response.text)
    11. #解析
    12. html=etree.HTML(response.text)
    13. #拿到每一个服务商的div
    14. # divs=html.xpath("/html/body/div[6]/div/div/div[2]/div[5]/div[1]/div[1]")
    15. divs=html.xpath("/html/body/div[6]/div/div/div[2]/div[5]/div[1]/div")#找到一堆的div,把[1]去掉,就是所有的div
    16. # print(divs)
    17. for div in divs:#找每一个服务商
    18. price=div.xpath("./div/div/a[2]/div[2]/div[1]/span[1]/text()") #找价格
    19. title=div.xpath("./div/div/a[2]/div[2]/div[2]/p/text()")
    20. com_name=div.xpath("./div/div/a[1]/div[1]/p/text()")
    21. location=div.xpath("./div/div/a[1]/div[1]/div/span/text()")
    22. print(location)

    image.png
    7、处理格式

    1. #爬取猪八戒网站
    2. import requests
    3. from lxml import etree
    4. if __name__=='__main__':
    5. headers={'User-Agent':'Mozilla/5.0 (iPhone; CPU iPhone OS 13_2_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0.3 Mobile/15E148 Safari/604.1'}
    6. #1、指定url
    7. url='https://shenzhen.zbj.com/search/f/?kw=saas'
    8. #2、发起请求 请求对应的url是携带参数的,并且请求过程中处理了参数
    9. response = requests.get(url=url,headers=headers)
    10. # print(response.text)
    11. #解析
    12. html=etree.HTML(response.text)
    13. #拿到每一个服务商的div
    14. # divs=html.xpath("/html/body/div[6]/div/div/div[2]/div[5]/div[1]/div[1]")
    15. divs=html.xpath("/html/body/div[6]/div/div/div[2]/div[5]/div[1]/div")#找到一堆的div,把[1]去掉,就是所有的div
    16. # print(divs)
    17. for div in divs:#找每一个服务商
    18. price=div.xpath("./div/div/a[2]/div[2]/div[1]/span[1]/text()")[0].strip("¥")#找价格,处理格式
    19. title="saas".join(div.xpath("./div/div/a[2]/div[2]/div[2]/p/text()"))#会有个空白符,saas高亮,拼接起来
    20. com_name=div.xpath("./div/div/a[1]/div[1]/p/text()")[0]
    21. location=div.xpath("./div/div/a[1]/div[1]/div/span/text()")[0]
    22. print(location)

    总结:

    就是一个个去数有多少个div,里面包含什么属性

    拓展:

    1、把内容输入到excel;