那些年用xpath玩爬虫时遇到的坑

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了那些年用xpath玩爬虫时遇到的坑相关的知识,希望对你有一定的参考价值。

参考技术A 到目前为止我一直用的xpath方式爬取页面数据。
我所采取的方法是直接利用xpath爬取其中一条,判断是否能采取这种方法。
目前遇到的坑有,总结一下

解决方法是,从新分析xpath路径。绕过这个根节点,从下一级找一个新的根节点

在爬取多个页面的时候我们需要从URL中找到规律,再利用遍历达到多个页面爬取的目的。例如

之前我们在学习GET传递参数的时候,知道URl+?+参数1&参数2+.....&参数n传递参数。这里我们通过对比两页的URL,把多余的传参删除,留下非常简练的链接,当然必须包括keyword,和分页如file= 1等
对上面的URL简化

keyword:php,分页curPage = 1,对分页keyword,进行遍历拼接。达到了多页爬取的目的

由于网页结构问题,网页中回家如&ndsp的空格字符,你爬取的数据会左右开弓,非常凌乱。整体美观受到影响。解决方法是strip()函数"itemname.strip()"

当时是爬取51job,取到的前三个字段为空,在插入excel时会出现三个空字段,分析发现是div标签,第一个字段是div[4]。当时想的办法是从divp[4]开始取值。失败,最后解决方法是还是利用strip函数判断字段是否为空,不为空取出数据插入list。

从开始接触,我们习惯了默认的UTF-8编码。在突然遇到不同的编码方式如'gbk',你爬取的字段就是一堆乱码

这个是我,一直跑火车,跑习惯了。红灯乱闯。
我没有加headers,也就是当前网页的绿灯。这个是真的没有想到,之前一直是以为headers 是模仿浏览器才去用。所以往往第一步就把我挡在了外面。
所以在爬取不管哪个网站你最好是加上headers,遵守交通规则。才能爬到你想要的数据

吃亏是福啊,在python的路上多吃点亏没错

附Python版教学“那些年用过的奇葩辞职理由”哈哈哈,看完笑掉牙。

导语

哈喽!哈喽!大家好,我是木木子,今日更新来啦~

最近国庆太长了,导致很多小伙伴儿玩儿疯了,然后不来上班了。害~这不?就遇到了一个请假的同事!!

老板:好的(乖巧)。

现在这段时间是不是除了遇到很多请假的小伙伴儿,还遇到了很多想辞职的呢?

水往低处流,人往高处走,辞职是难免的事。​所以这边小编给大家谈谈辞职信怎么写?

当我们选择离开现在的某个公司去另一家公司时,可能会因为工资低,或者是离家远等。那么,当我们辞职的时候,要如何写好辞职书呢?

今天小编就来给大家开一个辞职的小课堂!哈哈哈哈,保证你发完就可以直接走人了~下面的代码仅供娱乐的哈!

正文

      辞职报告里面理由要充分、可信。因为只有理由充分、可信,才能得到批准。语言要准确,文字要朴实,措辞要委婉、恳切,用委婉、恳切的言词来表明辞职的诚意。

幽默小段子——

老板,离开我,你会过的更好!

对不起,我是一个有梦想的人,我要回去养猪了↓↓↓

对不起,我翅膀硬了↓↓↓

有理有据,不能愧对父母↓↓↓

维护世界和平保护地球,才是我的责任,告辞↓↓↓

我的理想是不想上班↓↓↓

哈哈哈!天天写代码,也要放松下嘛!好啦,娱乐完之后小编开始干正事儿了~

正文开始——

(1)环境安装。

本文是基于tkinter的界面化小程序,Python安装、Pycharm安装、pillow模块以及一些自带的模块。

模块安装统一:

pip install -i https://pypi.douban.com/simple/+模块名

(2)思路框架。

老板无论是点关闭还是点不同意,都无法关闭窗口,最后只能无奈同意了 ...

辞职信的主要功能包括:同意、不同意、关闭窗口。

  • 同意:点击同意弹出提示框,点击提示框上按钮可关闭整个窗口。

  • 不同意:点击不同意,不同意按钮移动,点击一次移动一次 ...。

  • 关闭窗口:点击 X 号关闭窗口,弹出羞辱提示框。

点击不同的按钮的效果:

(3)代码实现四步骤。

01.Tkinter界面化设置窗口大小、选择的界面图片、按钮等等。

if __name__ == '__main__':
    window = tk.Tk()
    window.title('辞职信')
    width = 600
    height = 650
    screenwidth = window.winfo_screenwidth()
    screenheight = window.winfo_screenheight()
    alignstr = '%dx%d+%d+%d' % (width,
                                height, (screenwidth - width) / 2,
                                (screenheight - height) / 2)
    window.geometry(alignstr)
    # 设置窗口是否可变长、宽
    window.resizable(width=False, height=True)
    window.geometry('600x600')
    window.protocol("WM_DELETE_WINDOW", closeWindow)
    load = Image.open('02.jpeg').resize((300, 310))
    render = ImageTk.PhotoImage(load)
    L2 = tk.Label(window, image=render)
    L2.place(x=150, y=100)
    B1 = tk.Button(window, text='同意', command=agree)
    B1.place(x=155, y=420)
    B2 = tk.Button(window, text='不同意', command=disagree)
    B2.place(x=400, y=420)
    window.mainloop()

02.同意代码。

def agree():
    win = tk.Toplevel(window)
    win.geometry("500x150+{}+{}".
                 format(int((screenwidth - width) / 2),
                        int((screenheight - height) / 2)))
    win.title("辞职")
    label = tk.Label(win, text="您耗子尾汁", font=("华文行楷", 20))
    label.pack()
    btn = tk.Button(win, text="滚出去", width=6, height=1, command=window.destroy)
    btn.pack()

03.不同意代码。

def disagree():
    B2.place_forget()
    B2.place(x=random.randint(100, 500), y=random.randint(100, 500))

04.关闭窗口代码。

def closeWindow():
    messagebox.showinfo(title="不同意关不掉", message="关不掉吧,呵呵")
    return

效果如下——

图一

​图二

总结

俗话说的好,没有辞过职的人生,是不完整的(俗话:我可没说过)那就写到这里!

你们的支持是我最大的动力!!记得三连哦~mua 欢迎大家阅读往期的文章哦~

以上是关于那些年用xpath玩爬虫时遇到的坑的主要内容,如果未能解决你的问题,请参考以下文章

那些年,我们用并行遇到的坑01

爬虫遇到的坑🕳

那些在django开发中遇到的坑

scrapy爬虫踩的坑

Fragment全解析系列:那些年踩过的坑

爬虫第一步遇到的坑