人間重逢 2024-04-10 14:52 采纳率: 83.3%
浏览 4
已结题

关于#python#的问题:为什么使用Python爬虫采集不到数据

问一下各位,为什么使用Python爬虫采集不到数据?谢谢各位

import requests
from lxml import etree
import csv

#构造url地址
url = "https://www.zhipin.com/web/geek/job?query=%E5%A4%A7%E6%95%B0%E6%8D%AE&city=100010000&page={}"
#构造请求头信息
headers = {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.0.0 Safari/537.36 Edg/123.0.0.0"
}

#创建一个csv文件
f = open('sccc.csv', mode ='w', newline ='', encoding = 'utf-8')
fieldnames = ['职位', '工作地点', '薪资', '工作经验', '学历', '公司名称', '公司信息', '技术需求', '福利待遇']
#创建write对象
write = csv.DictWriter(f, fieldnames=fieldnames)
write.writeheader()

#实现翻页功能
for i in range(1,11):

    resp = requests.get(url=url.format(i), headers=headers)
    resp.encoding = "utf-8"
        # print(resp.text)

    html = etree.HTML(resp.text)#构造结构化的对象,方便解析使用
    jobs = html.xpath("/html/body/div[1]/div[2]/div[2]/div/div[1]/div[2]/ul")
        #print(jobs)
    for job in jobs:
        item={}#创建item字典去保存数据
        job_name = job.xpath("./li/div[1]/a/div[1]/span[1]/text()")
        item['name'] = job_name[0].strip() if job_name else None
        print(job_name)
        print(item)
            #写入csv文件
        write.writerow(item)


这个是输出的结果

img


csv文件里是这样的

img

  • 写回答

4条回答 默认 最新

  • 专家-赤兔[在线] 全栈领域优质创作者 2024-04-10 14:52
    关注

    引自免费微信小程序:皆我百晓生

    首先,我们来看一下这个问题的具体情况。根据您的描述,您在尝试使用Python爬虫抓取一些网站的数据,但是没有成功。以下是经过仔细检查后,我发现的一些可能的原因及相应的解决方案。

    1. 网站结构复杂,且HTML标签不清晰。在尝试提取数据时,可能会遇到HTML标签混乱、乱码等问题。解决方法是先尝试将网页内容分割成多个小块(例如,可以使用BeautifulSoup库中的find_all函数),再分别提取每个部分的数据。

      soup = BeautifulSoup(response.text, 'lxml')
      job_list = soup.find_all(['div', 'div', 'div', 'div'])
      for job in job_list:
          item = {}
          # ...进行其他提取
      
    2. HTML标签被CSS样式覆盖。某些页面可能存在使用CSS类对元素进行过滤的情况,导致代码无法正常获取到数据。为了解决这个问题,您可以尝试使用 CSS 中的 filter 属性筛选出指定类的元素,并将它们提取出来。

      filter_elements = soup.select('.job-item')  # 假设 .job-item 是 CSS 类名
      for element in filter_elements:
          item = {}
          # ...进行其他提取
      
    3. Python爬虫依赖于爬取代理,而有些网站会对IP地址进行限制。如果爬虫未能通过访问代理成功抓取到数据,则可能是由于这个原因。为了防止这种情况发生,您可以尝试使用代理服务器,并修改爬虫的请求参数,使其避开可能的限制。

      proxy = 'your-proxy-server-ip'  # 替换为你的代理服务器 IP
      proxy_user = 'your-proxy-user-name'
      proxy_password = 'your-proxy-password'
      
      requests.post('http://example.com', proxies=[{'proxy': proxy, 'user': proxy_user, 'password': proxy_password}])
      
    4. 编程语言与目标网站浏览器版本不兼容。为了提高爬取效率,您需要确保爬虫所使用的编程语言与目标网站浏览器版本兼容。为此,您可以尝试将爬虫改写为支持目标网站浏览器的语言,或者使用一种现有的工具(例如,Canopy)作为代理服务器,从而绕过浏览器限制。

      lang = 'your-language'  # 替换为您要使用的编程语言
      target browser = {'name': 'Chrome'}  # 替换为您的目标浏览器
      
      requests.get('http://example.com', proxies=[{'proxy': proxy, 'user': proxy_user, 'password': proxy_password}], params={'lang': lang}, headers=targetbrowser)
      

    总之,对于您目前遇到的问题,结合上述分析并尝试相应解决方案,应该可以帮助您更好地抓取到网站数据。如果您还有其他疑问或需要进一步的帮助,请随时告诉我。祝您编写顺利!

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(3条)

报告相同问题?

问题事件

  • 系统已结题 4月20日
  • 已采纳回答 4月12日
  • 修改了问题 4月10日
  • 创建了问题 4月10日

悬赏问题

  • ¥100 python 调用 cgps 命令获取 实时位置信息
  • ¥15 两台交换机分别是trunk接口和access接口为何无法通信,通信过程是如何?
  • ¥15 C语言使用vscode编码错误
  • ¥15 用KSV5转成本时,如何不生成那笔中间凭证
  • ¥20 ensp怎么配置让PC1和PC2通讯上
  • ¥50 有没有适合匹配类似图中的运动规律的图像处理算法
  • ¥15 dnat基础问题,本机发出,别人返回的包,不能命中
  • ¥15 请各位帮我看看是哪里出了问题
  • ¥15 vs2019的js智能提示
  • ¥15 关于#开发语言#的问题:FDTD建模问题图中代码没有报错,但是模型却变透明了