欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

python爬取58同城的兼职信息

程序员文章站 2022-06-09 09:43:12
...

标题python爬取58同城的兼职信息

刚刚开始学习爬虫,一些 自己研究的小东西,爬取58同城上面的兼职信息放入Excel表格里,具体代码解释在代码里给出注释,下面给出完整代码:

#首先是导包
import time
#import urllib.request
from bs4 import BeautifulSoup
import requests
import xlwt

#下面是对表格的一些初始化,我个人实验没有的话也不会出错,但为了严谨还是加上
style=xlwt.XFStyle()
font=xlwt.Font()
font.name='SimSun'
style.font=font

#下面是表格的一些设置,增加5个标题
#其中运用到了for--enumerate  循环
w=xlwt.Workbook(encoding='UTF-8')
ws=w.add_sheet('sheet 1',cell_overwrite_ok=True)
fields=["职位","工作区域","公司名称","价格","结算"]
for i,v in enumerate(fields):
    ws.write(0,i,v) 
    
#下面这一模块为模拟浏览器访问url链接并且BeautifulSoup解析网页内容   这里使用lxml解析,当然也可用其他的
def get_html(url):   
    headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64; rv:53.0) Gecko/20100101 Firefox/53.0"}
    html =requests.get(url,headers=headers).text
    bsObj =BeautifulSoup(html,'lxml')
    return bsObj
#以下为核心语句
def download_p(pages):
    number =1
    row=1
    #控制爬取页数
    for page in range(pages):
        url = 'https://qhd.58.com/xueshengjianzhi/%d/'%page
        bsObj =get_html(url)
        #print(bsObj.html)
        #下面为根据分析网页结构通过find来完成对所需内容的查找
        div_obj = bsObj.find_all('div',class_="item clearfix")
        for index in range(len(div_obj)):
            职位 =(div_obj[index].find_all('h2')[0].string)
            工作区域  =(div_obj[index].find_all('p')[0].string)[5:]
            公司名称=(div_obj[index].find_all('p',class_="company")[0].find_all('a')[0].text)[5:-3].strip()
            价格 =div_obj[index].find_all('span',class_="qian")[0].text
            结算 =div_obj[index].find_all('span',class_="fangshi")[0].text
             
            time.sleep(0.4)####暂停0.4秒,控制速度
            ws.write(row,0,职位)
            ws.write(row,1,工作区域)
            ws.write(row,2,公司名称)
            ws.write(row,3,价格)
            ws.write(row,4,结算)
            row+=1
            
            info ='已保存%d 条记录' %number + '\r'
            print(info,end='')
            number +=1

以下为主程序      
if __name__ =="__main__":
   pp=1##页数
   s_time =time.time()
   download_p(pp)
   e_time =time.time()
   print('\n')
   print('用时:%f秒'%(e_time-s_time))
   print('共'+str(pp)+'页')
w.save('秦皇岛兼职.xls')        


需要注意的一点是,在爬取次数多的时候,可能会出现爬取不到内容,那可能是网站监测到爬虫需要输入验证码,复制url进入网站完成验证码即可

相关标签: 爬虫 58同城