全网搜索一个人的痕迹,爬取百度搜索结果

作者有话说

小编今天就想全网搜索一个人的痕迹,看看能不能得到我想要的。
思路:

  1. python爬虫(爬取百度网站),输入 姓名
  2. 爬虫结果写入txt文件
  3. 得到的txt文件中,含有大量重名,或者其他一些脏数据
  4. ctrl+F,输入这个人的其他关键词 ,如:国网重庆。
  5. 定义到具体位置,复制位置前的网址,然后在浏览器打开,即可浏览到这个人的信息。
  6. 如果关键词搜索不到这个人,说名这个人还未在互联网上留下痕迹。

网址分析

复制网址

在这里你会看到,明明在浏览器URL栏看到的是中文,但是复制url,粘贴到记事本或代码里面,就会变成上面这样?)
在很多网站的URL中对一些get的参数或关键字进行编码,所以我们复制出来的时候,会出现问题。但复制过来的网址可以直接打开。本例子不用管这个。
那么,怎样才能自动爬取第一页以外的其他页面,打开第三页,网页地址如下,分析发现和第一页区别在于:第一页最后pn=10,第三页pn=20
我们可以想到自动获取多个网页的方法,可以for循环实现,每次循环后,pn+10

审查元素 发现内容区 和单个内容区见图

代码
python
不解释代码


from bs4 import BeautifulSoup
import numpy as np
import requests
from requests.exceptions import  RequestException
import pandas as pd
import re


#读取网页
def craw(url,page):
    try:

        headers = {
    
    
            "User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3947.100 Safari/537.36"}
        html1 = requests.request("GET", url, headers=headers,timeout=10, verify=False)
        html1.encoding ='utf-8' # 加编码,重要!转换为字符串编码,read()得到的是byte格式的
        html=html1.text

        return html
    except RequestException:#其他问题
        print('读取error')
        return None
#解析网页并保存数据到表格
def pase_page(url,page):
    html=craw(url,page)
    html=str(html)
    if len(html)>10:
        soup = BeautifulSoup(html, 'lxml')
        shangping=soup.select('#content_left .result.c-container.new-pmd')#所有内容div

        for li in shangping:#遍历每一个内容

            " 网址"

            website=str(li.select('.t'))
            web=str(re.findall('href=(.* )target',website))


            " 内容标题"
            title=str(re.findall('target(.*)</a>',website))
            title=re.sub('[_blank,=,em,<,,">]','',title)#删除一些奇怪字符

            " 内容"
            content=str(li.select('.c-abstract'))
            content=re.sub('[divclasscabstractem,em,<,=,"-",>,-,/]','',content)#剔除一些奇怪的字符
            #content=remove_punctuation(content)
            #content=content.apply(remove_punctuation)

            " 写入txt"
            with open('百度搜索.txt','a',encoding='utf-8')as c:
                c.write(web+'\n')
                c.write(title+'\n')
                c.write(content+'\n')



for i  in range(10,650,10):#遍历网页10,。。。。。#查看末页网址,发现最后pn=650
    print(i)
    url='https://www.baidu.com/s?wd=%E4%BD%99%E7%99%BB%E6%AD%A6&pn='+str(i)+'&oq=%E4%BD%99%E7%99%BB%E6%AD%A6&tn=56080572_3_hao_pg&ie=utf-8&usm=1&rsv_idx=2&rsv_pq=ffcc5d4d00001b62&rsv_t=49ac9CnXhelNWIZNsv%2B236pf8b0c4gpk9tfUY%2BXO5jIYkgpRGSEri7Kz6r%2Byy%2FQz9qfrtUnb25E'
#url='https://www.baidu.com/s?wd=%E4%BD%99%E7%99%BB%E6%AD%A6&pn=20&oq=%E4%BD%99%E7%99%BB%E6%AD%A6&tn=56080572_3_hao_pg&ie=utf-8&usm=1&rsv_idx=2&rsv_pq=ffcc5d4d00001b62&rsv_t=49ac9CnXhelNWIZNsv%2B236pf8b0c4gpk9tfUY%2BXO5jIYkgpRGSEri7Kz6r%2Byy%2FQz9qfrtUnb25E'
    pase_page(url,i)


结果文件夹

我知道这个人的其中一个关键词:国网重庆
ctrl+F 查找 。即可定位到具体位置。然后复制位置前面的网址即可查找到这个人。

这里就不文本分析这个人啦(毕竟这个人很重要。)

当然可以爬取其他人,自己修改下url 就是
在这里插入图片描述

作者:电气-余登武

猜你喜欢

转载自blog.csdn.net/kobeyu652453/article/details/115026689
今日推荐