九要 2021-01-27 17:04 采纳率: 0%
浏览 48

各位大神好,爬前程无忧的时候出现错误是什么问题?

 line 11, in <module>
ata)[0]#获取到所输入城市的id

代买是这个

import requests
import re
hd = {
    "User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.130 Safari/537.36"
}
city = input("请输入城市拼音:")#注意这里一定是拼音小写的,网站限制。。
job = input("请输入职位:")
txt = requests.get("https://www.51job.com/"+city)#所输入城市的前程无忧主页
data = bytes(txt.text,txt.encoding).decode("gbk","ignore")
pat_city_id= '<input type="hidden".*?id="jobarea".*?value="(.*?)"/>'
city_id = re.compile(pat_city_id,re.S).findall(data)[0]#获取到所输入城市的id
#print(city_id)
txt_1= requests.get("https://search.51job.com/list/"+str(city_id)+",000000,0000,00,9,99,"+job+",2,1.html?lang=c&postchannel=0000&workyear=99&cotype=99&degreefrom=99&jobterm=99&companysize=99&ord_field=0&dibiaoid=0",headers = hd)
data= bytes(txt_1.text,txt_1.encoding).decode("gbk","ignore")
#print(data)
pat = ' <div class="rt">.*?共(.*?)条职位.*?</div>'
num = re.compile(pat,re.S).findall(data)[0]#获取所搜索职位一共有多少
#print(num)
page = int(num)//50+1#算一下一共有多少页
#print(page)
for i in range(0,page):
    print("----正在爬"+str(i+1)+"页----")
    this_url = ("https://search.51job.com/list/"+str(city_id)+",000000,0000,00,9,99,"+job+",2,"+str(i+1)+".html?lang=c&postchannel=0000&workyear=99&cotype=99&degreefrom=99&jobterm=99&companysize=99&ord_field=0&dibiaoid=0")
    txt_2 = requests.get(this_url,headers = hd)
    data = bytes(txt_2.text,txt_2.encoding).decode("gbk","ignore")
#    print(data)
    pat_title = ' <span>.*?<a target="_blank" title="(.*?)" .*?</span>'
    pat_company = '<span class="t2"><a target="_blank" title="(.*?)" .*?</span>'
    pat_money = '<div class="el">.*?<span class="t4">(.*?)</span>.*?</div>'
    try:
        for j in range(0,50):
            title = re.compile(pat_title,re.S).findall(data)[j]#获取职位
            company = re.compile(pat_company,re.S).findall(data)[j]#获取公司
            money = re.compile(pat_money,re.S).findall(data)[j]#获取薪资
#            print(len(money))
#            print(title)
#            print(company)
#            print(money)
#            print("--------")
            with open("工作.doc","a+",encoding='utf-8')as f:
                f.write(title+"\r\n"+company+"\r\n"+money+"\r\n"+"------\r\n")

    except Exception as ess:
        pass
 

  • 写回答

1条回答 默认 最新

  • 小Y的编程课堂 2023-06-02 18:21
    关注

    被服务器反爬了,可以都在请求的时候多来几次

    评论

报告相同问题?

悬赏问题

  • ¥15 求daily translation(DT)偏差订正方法的代码
  • ¥15 js调用html页面需要隐藏某个按钮
  • ¥15 ads仿真结果在圆图上是怎么读数的
  • ¥20 Cotex M3的调试和程序执行方式是什么样的?
  • ¥20 java项目连接sqlserver时报ssl相关错误
  • ¥15 一道python难题3
  • ¥15 牛顿斯科特系数表表示
  • ¥15 arduino 步进电机
  • ¥20 程序进入HardFault_Handler
  • ¥15 关于#python#的问题:自动化测试