简单百度爬虫、查询个人公司信息的实现

本贴最后更新于 1435 天前,其中的信息可能已经时异事殊

本来对 python 兴趣不大,但是为了期中考,简单记录一下超级无敌简单的爬虫实现的过程

接下来开始大白模式的记录,打发我无聊的时光:

  1. headers:解决 request 反爬虫,就是当我们访问部分网页的时候,会出现无法爬取数据、或者无法访问的时候,这时候采用 headers,将爬虫伪装成浏览器去访问,这样就起到解决反爬虫的作用。
  2. url:需要爬取的网页连接,注意{}的使用,解决了后面自己赋值的问题
  3. requests.get(url),进行服务器访问请求,由 request 内部生成 url 对象(具体可以看一下人家:https://blog.csdn.net/k_koris/article/details/82950654
  4. url.format 进行之前的{}赋值
  5. headers=headers 设置相应 request header
  6. etree.HTML:采用 XPath 进行资源的解析修正,便于后面截取处理(详情查看其他大佬博客:https://blog.csdn.net/qq_38410428/article/details/82792730
  7. for 循环:没什么好说的,就是打字浪费一下时间
  8. XPath:进行对元素属性的遍历查找(参照:https://www.cnblogs.com/lei0213/p/7506130.html
  9. join:字符连接操作,这个不懂么 emmmmm(孩子没救了)

10、同样的,replace、split、format,不会自己百度。。。。。

PS:这里说一下 headers 的获取方法,打开 Edge,按 F12,找到 network,刷新,找到 request headers。如果还不会参照人家大佬的(https://blog.csdn.net/ysblogs/article/details/88530124

好了,废话不多说,记录下代码,hhhhh,看到的如果小白可以照葫芦画瓢,大佬绕道

import requests
from lxml import etree

headers = {
    'User-Agent':
    'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36'
}
url = "https://www.baidu.com/s?wd={}&rn=20&ie=utf-8&usm=4&rsv_pq=dda16fac00085a59&rsv_t=ca17vQlKisiOERxSWewcnyg/K/0flYw9KAqdtGiqNMpwAXUTAmhv6MG/f5M"
keyword = input('请输入关键词:')
response = requests.get(url.format(keyword), headers=headers)
html = etree.HTML(response.text)

for i in range(1, 21):
    title = html.xpath(
        '/html/body/div/div[3]/div[1]/div[3]/div[{}]/h3/a//text()'.format(i))
    title_ = ''.join(''.join(title).replace(' ', '').split())
    print(title_, '\n')

接下来附上这次期中作业的代码。下面这个企信通查询个人名下的公司基本信息的一个实现

# -*- coding:utf-8 -*-
import requests
import xlwt
from lxml import etree
headers = {
    'User-Agent':
    'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 Safari/537.36 Edge/18.18362',
    'Accept':
    'image/png, image/svg+xml, image/*; q=0.8, */*; q=0.5',
    'Accept-Encoding': 'gzip,deflate,br',
    'Connection':'Keep-Alive',
    'Accept-Language':'zh-Hans-CN,zh-Hans;q = 0.5',
    'Host':'hm.baidu.com',
    'Referer':'https://www.tianyancha.com/?jsid=SEM-BAIDU-PZ2005-SY-000001'
}
url = "https://www.qixintong.cn/qxtsearch/?key={}&typestr=0"
keyword = input("请输入姓名:")
num = int(input("请输入查询次数:"))
response = requests.get(url.format(keyword), headers=headers)
html = etree.HTML(response.text)
#print(html)查看请求成功的list

#创建表格
wb = xlwt.Workbook()
sh = wb.add_sheet("test")
#开始解析
index = '/html/body/div[3]/div/div/div/div[2]/ul/li[{}]/'
test =['h2','h2/span','span[1]','span[2]','span[3]','p']

for i in range(int(num)):
    for j in range(6):
        flag = index+test[j]+'//text()'
        name = html.xpath(flag.format(i))
        if j==0 or j==1:
            name_ = ''.join(''.join(name).replace(" "," ").split())
        else:
            name_ = ''.join(''.join(name))
        print(name_, '\n')
        sh.write(i,j,name_)
wb.save("企信通.xls")
print("提取结束,保存退出")



  • Python

    Python 是一种面向对象、直译式电脑编程语言,具有近二十年的发展历史,成熟且稳定。它包含了一组完善而且容易理解的标准库,能够轻松完成很多常见的任务。它的语法简捷和清晰,尽量使用无异义的英语单词,与其它大多数程序设计语言使用大括号不一样,它使用缩进来定义语句块。

    536 引用 • 672 回帖
  • 爬虫

    网络爬虫(Spider、Crawler),是一种按照一定的规则,自动地抓取万维网信息的程序。

    106 引用 • 275 回帖 • 1 关注
  • 笔记

    好记性不如烂笔头。

    303 引用 • 777 回帖

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...
  • wizardforcel

    天眼查和看准已经为咱们收集好了信息,何必再收集一遍。。

    1 回复
  • 其他回帖
  • sirwsl

    我们的作业,随手写的

推荐标签 标签

  • flomo

    flomo 是新一代 「卡片笔记」 ,专注在碎片化时代,促进你的记录,帮你积累更多知识资产。

    3 引用 • 80 回帖 • 2 关注
  • Tomcat

    Tomcat 最早是由 Sun Microsystems 开发的一个 Servlet 容器,在 1999 年被捐献给 ASF(Apache Software Foundation),隶属于 Jakarta 项目,现在已经独立为一个顶级项目。Tomcat 主要实现了 JavaEE 中的 Servlet、JSP 规范,同时也提供 HTTP 服务,是市场上非常流行的 Java Web 容器。

    162 引用 • 529 回帖 • 4 关注
  • Hadoop

    Hadoop 是由 Apache 基金会所开发的一个分布式系统基础架构。用户可以在不了解分布式底层细节的情况下,开发分布式程序。充分利用集群的威力进行高速运算和存储。

    82 引用 • 122 回帖 • 621 关注
  • Latke

    Latke 是一款以 JSON 为主的 Java Web 框架。

    70 引用 • 532 回帖 • 712 关注
  • ZooKeeper

    ZooKeeper 是一个分布式的,开放源码的分布式应用程序协调服务,是 Google 的 Chubby 一个开源的实现,是 Hadoop 和 HBase 的重要组件。它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。

    59 引用 • 29 回帖 • 18 关注
  • golang

    Go 语言是 Google 推出的一种全新的编程语言,可以在不损失应用程序性能的情况下降低代码的复杂性。谷歌首席软件工程师罗布派克(Rob Pike)说:我们之所以开发 Go,是因为过去 10 多年间软件开发的难度令人沮丧。Go 是谷歌 2009 发布的第二款编程语言。

    492 引用 • 1383 回帖 • 375 关注
  • 智能合约

    智能合约(Smart contract)是一种旨在以信息化方式传播、验证或执行合同的计算机协议。智能合约允许在没有第三方的情况下进行可信交易,这些交易可追踪且不可逆转。智能合约概念于 1994 年由 Nick Szabo 首次提出。

    1 引用 • 11 回帖 • 7 关注
  • Sphinx

    Sphinx 是一个基于 SQL 的全文检索引擎,可以结合 MySQL、PostgreSQL 做全文搜索,它可以提供比数据库本身更专业的搜索功能,使得应用程序更容易实现专业化的全文检索。

    1 引用 • 181 关注
  • Chrome

    Chrome 又称 Google 浏览器,是一个由谷歌公司开发的网页浏览器。该浏览器是基于其他开源软件所编写,包括 WebKit,目标是提升稳定性、速度和安全性,并创造出简单且有效率的使用者界面。

    60 引用 • 287 回帖
  • TensorFlow

    TensorFlow 是一个采用数据流图(data flow graphs),用于数值计算的开源软件库。节点(Nodes)在图中表示数学操作,图中的线(edges)则表示在节点间相互联系的多维数据数组,即张量(tensor)。

    20 引用 • 19 回帖
  • 强迫症

    强迫症(OCD)属于焦虑障碍的一种类型,是一组以强迫思维和强迫行为为主要临床表现的神经精神疾病,其特点为有意识的强迫和反强迫并存,一些毫无意义、甚至违背自己意愿的想法或冲动反反复复侵入患者的日常生活。

    15 引用 • 161 回帖 • 6 关注
  • 一些有用的避坑指南。

    69 引用 • 93 回帖 • 1 关注
  • 深度学习

    深度学习(Deep Learning)是机器学习的分支,是一种试图使用包含复杂结构或由多重非线性变换构成的多个处理层对数据进行高层抽象的算法。

    40 引用 • 40 回帖
  • 酷鸟浏览器

    安全 · 稳定 · 快速
    为跨境从业人员提供专业的跨境浏览器

    3 引用 • 59 回帖 • 25 关注
  • Solo

    Solo 是一款小而美的开源博客系统,专为程序员设计。Solo 有着非常活跃的社区,可将文章作为帖子推送到社区,来自社区的回帖将作为博客评论进行联动(具体细节请浏览 B3log 构思 - 分布式社区网络)。

    这是一种全新的网络社区体验,让热爱记录和分享的你不再感到孤单!

    1425 引用 • 10043 回帖 • 468 关注
  • GitBook

    GitBook 使您的团队可以轻松编写和维护高质量的文档。 分享知识,提高团队的工作效率,让用户满意。

    3 引用 • 8 回帖
  • 博客

    记录并分享人生的经历。

    270 引用 • 2386 回帖 • 1 关注
  • Sandbox

    如果帖子标签含有 Sandbox ,则该帖子会被视为“测试帖”,主要用于测试社区功能,排查 bug 等,该标签下内容不定期进行清理。

    370 引用 • 1215 回帖 • 582 关注
  • Jenkins

    Jenkins 是一套开源的持续集成工具。它提供了非常丰富的插件,让构建、部署、自动化集成项目变得简单易用。

    51 引用 • 37 回帖
  • 架构

    我们平时所说的“架构”主要是指软件架构,这是有关软件整体结构与组件的抽象描述,用于指导软件系统各个方面的设计。另外还有“业务架构”、“网络架构”、“硬件架构”等细分领域。

    140 引用 • 441 回帖 • 1 关注
  • 反馈

    Communication channel for makers and users.

    123 引用 • 906 回帖 • 192 关注
  • JVM

    JVM(Java Virtual Machine)Java 虚拟机是一个微型操作系统,有自己的硬件构架体系,还有相应的指令系统。能够识别 Java 独特的 .class 文件(字节码),能够将这些文件中的信息读取出来,使得 Java 程序只需要生成 Java 虚拟机上的字节码后就能在不同操作系统平台上进行运行。

    180 引用 • 120 回帖 • 1 关注
  • 倾城之链
    23 引用 • 66 回帖 • 100 关注
  • Quicker

    Quicker 您的指尖工具箱!操作更少,收获更多!

    20 引用 • 73 回帖 • 2 关注
  • BookxNote

    BookxNote 是一款全新的电子书学习工具,助力您的学习与思考,让您的大脑更高效的记忆。

    笔记整理交给我,一心只读圣贤书。

    1 引用 • 1 回帖
  • 正则表达式

    正则表达式(Regular Expression)使用单个字符串来描述、匹配一系列遵循某个句法规则的字符串。

    31 引用 • 94 回帖
  • MySQL

    MySQL 是一个关系型数据库管理系统,由瑞典 MySQL AB 公司开发,目前属于 Oracle 公司。MySQL 是最流行的关系型数据库管理系统之一。

    675 引用 • 535 回帖 • 1 关注