double07 发表于 2021-3-17 10:25

python爬的数据与网页实际有出入?

本帖最后由 double07 于 2021-3-17 12:34 编辑

#导入模块
import requests
import pandas
from lxml import etree

data_list=[]

#获取网页内容
def gethtml(url):
    headers={'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.90 Safari/537.36'}
    response=requests.get(url,headers=headers)
    return response.content.decode()

#获取网页数据
def getpath(r):
    html=etree.HTML(r)
    b=html.xpath('//div//ul[@class="sojob-list"]/li')
    for i in b:
      list={}
      list['职位'] = i.xpath("./div/div/h3/a/text()")
      list['月薪']= i.xpath('./div/div/p/span/text()')
      list['发布时间'] = i.xpath('./div/div/p/time/text()')
      list['招聘企业'] = i.xpath('./div/div/p/a/text()')
      list['工作地点'] = i.xpath('.//*[@class="area"]/text()')
      list['链接'] = i.xpath("./div/div/h3/a/@href")
      data_list.append(list)
    return data_list

#翻页
def next_page():
    url_np='https://www.liepin.com/zhaopin/?&key=运营分析总监&curPage={}'
    url_list=
    return url_list



#主程序
def run_liep():
    page = next_page()
    for i in page:
      gh=gethtml(i)
      gp=getpath(gh)
      gp = pandas.DataFrame(gp)
      gp.to_excel('./liepin.xlsx', index=False)
    return gp

if __name__ == '__main__':
    print(run_liep())


用这段代码爬取的数据,与网页打开的不一样?哪里出问题?
已解决:增加cookie即可

DavisC 发表于 2021-3-17 10:35

请以UTF-8编码保存你的这段代码即可正常工作

咸鱼灭 发表于 2021-3-17 10:37

就多了一堆转义符,你爬到时处理下就好了

DavisC 发表于 2021-3-17 10:39

WINDOWS 自带的记事本,粘贴你的这段代码进记事本,文件->另存为,编码选择“UTF-8”,保存后运行就行。

double07 发表于 2021-3-17 10:55

没弄成功

wuailila 发表于 2021-3-17 11:02

学习一下看看

52changew 发表于 2021-3-17 11:04

你加了“UTF-8"标注了???

cyw_ly 发表于 2021-3-17 11:16

UTF-8编码处理下

raelag 发表于 2021-3-17 12:15

第一个xpath的/多了?
print b 看下

double07 发表于 2021-3-17 12:33

原因找到了,要加cookie
页: [1] 2
查看完整版本: python爬的数据与网页实际有出入?