来自 计算机编程 2019-12-07 03:07 的文章
当前位置: 澳门威尼斯人平台 > 计算机编程 > 正文

Python爬知乎妹子都爱取啥名,python爬知妹子

最近在练习写爬虫的时候,正巧同学的女朋友有需求,大概是爬取知网内的几千个主题的数据,每一个主题的条数记录有几条的到几千条的不等,总来的来说也算是个上万数量级的爬虫了,分析了下知网,发现使用专业检索,可以完成我的目标,然后通过chrome的developer tools大概分析了下了请求数据包,发现知网的查询是分成两步的,第一步是一个总的请求(查询的条件基本上都在第一步里面了),会返回一个串

# -*- coding: utf-8 -*-
import time
import urllib
import urllib2
import cookielib
from lxml import etree
import random


'''
爬取第一页,获取共页数
爬取第二页至最后一页
'''

# 下载当前页所有文章的pdf或caj
def download_paper(treedata, opener, localdir):
    '''
    传入参数:
        treedata:当前列表页的treedata数据
        opener: referer已修改为当前页
        localdir: 保存目录
    '''
    tr_node = treedata.xpath("//tr[@bgcolor='#f6f7fb']|//tr[@bgcolor='#ffffff']")

    for item in tr_node:
        paper_title = item.xpath("string(td/a[@class='fz14'])")
        paper_link = item.xpath("td/a[@class='fz14']/@href")
        paper_author = item.xpath("td[@class='author_flag']/a/text()")
        paper_source = item.xpath("td[4]/a/text()")
        paper_pub_date = item.xpath("td[5]/text()")
        paper_db = item.xpath("td[6]/text()")
        paper_cited = item.xpath("td[7]//a/text()")
        paper_download_count = item.xpath("td[8]/span/a/text()")
        print paper_title
        print paper_link

        # 获取paper详情页面链接,访问详情页前,要设置referer
        paper_detail_url_fake = "http://kns.cnki.net" + paper_link[0]
        response = opener.open(paper_detail_url_fake)
        paper_detail_page_treedata = etree.HTML(response.read())
        # 下载前要设置referer为详情页
        opener.addheaders = [("Referer", response.url)]

        # 硕士论文并没有【pdf下载】的链接
        pdf_download_url = paper_detail_page_treedata.xpath('//*[@id="pdfDown"]/@href')
        if len(pdf_download_url) == 0:
            whole_book_download_url = paper_detail_page_treedata.xpath('//*[@id="DownLoadParts"]/a[1]/@href')
            download_url = whole_book_download_url[0]
            filename = localdir + paper_title + ".caj"
        else:
            download_url = pdf_download_url[0]
            filename = localdir + paper_title + ".pdf"
        filename.replace("\", "").replace("/","").replace(":", "").replace("*", "").replace("?", "").replace(""","").replace("<","").replace(">","").replace("|","")
        response_file = opener.open(download_url)
        down_file = open(filename, 'wb')
        down_file.write(response_file.read())
        down_file.close()


# 构建第一次请求时使用的URL
url = 'http://kns.cnki.net/kns/request/SearchHandler.ashx?action=&NaviCode=*&'
parameter={'ua':'1.11'}
parameter['formDefaultResult']=''
parameter['PageName']='ASP.brief_default_result_aspx'
parameter['DbPrefix']='SCDB'
parameter['DbCatalog']='中国学术文献网络出版总库'
parameter['ConfigFile']='SCDBINDEX.xml'
parameter['db_opt']='CJFQ'
parameter['db_opt']='CJFQ,CJRF,CDFD,CMFD,CPFD,IPFD,CCND,CCJD'
parameter['txt_1_sel']='SU$%=|'
parameter['txt_1_value1']='爬虫'
parameter['txt_1_special1']='%'
parameter['his']='0'
parameter['parentdb']='SCDB'
parameter['__']='Sun Nov 05 2017 20:09:05 GMT+0800 (中国标准时间) HTTP/1.1'
times = time.strftime('%a %b %d %Y %H:%M:%S')+' GMT+0800 (中国标准时间)'
parameter['__']=times

getdata = urllib.urlencode(parameter)

uapools = [
    "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:34.0) Gecko/20100101 Firefox/34.0",
    "Mozilla/5.0 (X11; U; Linux x86_64; zh-CN; rv:1.9.2.10) Gecko/20100922 Ubuntu/10.10 (maverick) Firefox/3.6.10",
    "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:34.0) Gecko/20100101 Firefox/34.0",
    "Mozilla/5.0 (X11; U; Linux x86_64; zh-CN; rv:1.9.2.10) Gecko/20100922 Ubuntu/10.10 (maverick) Firefox/3.6.10",
    "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/534.57.2 (KHTML, like Gecko) Version/5.1.7",
    "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.71",
    "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.64 Safari/537.11"
]




headers = {'Connection': 'Keep-Alive','Accept': 'text/html,*/*','User-Agent': 'Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/29.0.1547.66 Safari/537.36'}
headers['Referer']='http://kns.cnki.net/kns/brief/default_result.aspx'
#headers['User-Agent'] = random.choice(uapools)
req = urllib2.Request(url + getdata, headers=headers)

cookie = cookielib.CookieJar()

opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cookie), urllib2.HTTPHandler)
html = opener.open(req).read()

with open('C:/code/test3/web1.html', 'w') as e:
    e.write(html)

# 构建第二次请求时使用的URL
query_string = urllib.urlencode({'pagename': 'ASP.brief_default_result_aspx','dbPrefix':'SCDB', 'dbCatalog': '中国学术文献网络出版总库',
                                 'ConfigFile': 'SCDBINDEX.xml', 'research':'off', 't': int(time.time()), 'keyValue': '爬虫', 'S': '1'})

url2 = 'http://kns.cnki.net/kns/brief/brief.aspx'
req2 = urllib2.Request(url2 + '?' + query_string, headers=headers)
# 返回的是搜索结果列表页,第一页
result2 = opener.open(req2)
#opener.addheaders = [("Referer", req2.get_full_url())]
html2 = result2.read()
with open('C:/code/test3/web2.html', 'w') as e:
    e.write(html2)

treedata = etree.HTML(html2)

# 请求详情页之前把引用地址改成列表页
opener.addheaders = [("Referer", req2.get_full_url())]
localdir = "C:/code/test3/pdf/"
download_paper(treedata, opener, localdir)

#获取总页数total_page_count
current_page_node = treedata.xpath('//span[@class="countPageMark"]/text()')
print "current_page_node:", current_page_node
total_page_count = current_page_node[0].split('/')[1]
print "total_page_count:", total_page_count

current_url = result2.url
for page_num in range(2, int(total_page_count)+1):
    #获取下一页的链接
    print "准备爬取第", str(page_num), "页"
    next_page_node = treedata.xpath('//div[@class="TitleLeftCell"]/a[last()]/@href')
    next_page_url = next_page_node[0]
    next_page_url_full = url2 + next_page_url
    opener.addheaders = [("Referer", current_url)]
    # 返回的是搜索结果下一页的列表页
    next_page_response = opener.open(next_page_url_full)
    opener.addheaders = [("Referer", next_page_response.url)]
    #file_next_page = open('C:/code/test3/web4' + str(page_num) + '.html', 'w')
    html = next_page_response.read()
    #file_next_page.write(html)
    #file_next_page.close()


    #print "current_url:", current_url
    #print "next_page_url:", next_page_response.url
    # 修改上一页,以供请求下页时引用
    #result2 = next_page_response
    treedata = etree.HTML(html)
    current_url = next_page_response.url

    localdir = "C:/code/test3/pdf/"
    download_paper(treedata, opener, localdir)
Python爬虫爬取知乎小结

http://blog.csdn.net/MajorDong100/article/details/52264101

Python爬知乎妹子都爱取啥名,python爬知妹子

澳门威尼斯人平台 1

闲来无事上知乎,看到好多妹子,于是抓取一波。

有没有兴趣??

目标网址

抓取分析

澳门威尼斯人平台 2

最新代码
https://github.com/tom523/crawlCnki.git
爬虫夹故障

程序员写网络爬虫入门之用Scrapy框架抓取爱奇艺电影信息

http://www.jianshu.com/p/e03caad6c761

爬取分析

澳门威尼斯人平台 3

使用pandas操作文件

import pandas as pd
fp = pd.read_excel('D:Backup桌面lunzige.xlsx')

fp

澳门威尼斯人平台 4

name = fp['name'].tolist()
li1 = list(set(name))
li1

['阿蕾',
 '杨面',
 '陈10',
 '杨顺顺',
 '霧橤',
 '真顺顺真',
 '谢椿明',
 '刀刀',
 '水枪大帝',
 '倾浅',
 'Listening',
 '小火龙',
 '包子琛',
 '杨笋笋',
 '蜉蝣',
 '十元',
 '靡靡之音',
 'Real机智张',
 '陈梓小童鞋',
 '花甲',
 '窗里窗外',
 '刘梓乔',
 '璇璇97',
 'Olivia菊香小姐姐',
 '牛奶小夏目',
 '周依宁',
 '万阿咸',
 '一蓑烟雨任平生',
 '来都来了',
 '就像周一',
 'Mc蛋蛋',
 '秉剑侯',
 '李大梦Lee',
 'Diss锐雯',
 '雨音眞白',
 '半仙幺幺',
 'Natsuki是只蠢兔纸',
 '夏冰莹',
 'guuweihai',
 '阿舞',
 '肖柚妮',
 '墨脱要开',
 '芷珞',
 '舒西婷',
 'Childe0Q',
 '被压扁的海螺',
 'snow arc',
 '灰灰灰灰灰plus',
 '小兔子菲呀',
 '士多啤梨羊咩咩',
 '李小可可',
 '谁来拽我的尾巴',
 '飞鸽之舞',
 '小美',
 '樱雪绫sama',
 'zshiyao',
 '王漠里',
 'Slivan',
 '喵小虾',
 'SUSAN苏',
 '上官兰颜',
 '这个杀手不太冷',
 '看朱成碧纷思君',
 '情绪',
 '我系小忌廉',
 '一只兔',
 'June',
 '我就想改名而已',
 '温柔的大猫Leo',
 '猫芙琳',
 '以太',
 '博丽魔理沙',
 '洛丽塔',
 '羽小团',
 '娄良',
 'Rosi',
 '叶以北',
 '吃不胖的小猫',
 'Lina',
 'ingrid',
 'itttttx',
 '胡杨',
 '孙阿童',
 '林美珍',
 '赫蘿Taiga',
 '宫曼曼',
 'Yoonyicc',
 'ZW711',
 '笙箫',
 'KIKI.Liu',
 '另一只袜子',
 '荒野大嫖客',
 '少女诗',
 '芸豆豆豆豆',
 '璐璐噜',
 '棹歌',
 '梦里有只独角兽',
 'Oo澄子oO',
 '雷梅苔丝',
 'CherryZhao',
 '李萬一',
 '琴脂',
 '鹿斑比',
 'Chris姬-云烟',
 'hyoram',
 '蔗蔗蔗',
 '柚子Ruby',
 'Sheena',
 '孟德尔',
 'kaka小师妹',
 '桢视明',
 '大豆苗',
 '少女开膛手',
 '陈诗茗']

那么,下一步就是对名字进行分词了,jieba分词,你值得拥有。fxsjy/jieba

li2 = ''.join(li1)
li2

'阿蕾杨面陈10杨顺顺霧橤真顺顺真谢椿明刀刀水枪大帝倾浅Listening小火龙包子琛杨笋笋蜉蝣十元靡靡之音Real机智张陈梓小童鞋花甲窗里窗外刘梓乔璇璇97Olivia菊香小姐姐牛奶小夏目周依宁万阿咸一蓑烟雨任平生来都来了就像周一Mc蛋蛋秉剑侯李大梦LeeDiss锐雯雨音眞白半仙幺幺Natsuki是只蠢兔纸夏冰莹guuweihai阿舞肖柚妮墨脱要开芷珞舒西婷Childe0Q被压扁的海螺snow arc灰灰灰灰灰plus小兔子菲呀士多啤梨羊咩咩李小可可谁来拽我的尾巴飞鸽之舞小美樱雪绫samazshiyao王漠里Slivan喵小虾SUSAN苏上官兰颜这个杀手不太冷看朱成碧纷思君情绪我系小忌廉一只兔June我就想改名而已温柔的大猫Leo猫芙琳以太博丽魔理沙洛丽塔羽小团娄良Rosi叶以北吃不胖的小猫Linaingriditttttx胡杨孙阿童林美珍赫蘿Taiga宫曼曼YoonyiccZW711笙箫KIKI.Liu另一只袜子荒野大嫖客少女诗芸豆豆豆豆璐璐噜棹歌梦里有只独角兽Oo澄子oO雷梅苔丝CherryZhao李萬一琴脂鹿斑比Chris姬-云烟hyoram蔗蔗蔗柚子RubySheena孟德尔kaka小师妹桢视明大豆苗少女开膛手陈诗茗'

下一步就是分词制作图云了

import jieba
seg_list = jieba.cut(li2)
word = "/".join(seg_list)
print("Full Mode: " + "/ ".join(seg_list)) 

Building prefix dict from the default dictionary ...
Dumping model to file cache C:UsersADMINI~1AppDataLocalTempjieba.cache
Loading model cost 1.148 seconds.
Prefix dict has been built succesfully.
Full Mode: 阿蕾/ 杨/ 面陈/ 10/ 杨/ 顺顺/ 霧/ 橤/ 真/ 顺顺/ 真/ 谢椿明/ 刀刀/ 水枪/ 大帝/ 倾浅/ Listening/ 小/ 火龙/ 包子/ 琛/ 杨笋/ 笋/ 蜉蝣/ 十元/ 靡靡之音/ Real/ 机智/ 张/ 陈梓/ 小/ 童鞋/ 花甲/ 窗里/ 窗外/ 刘梓乔/ 璇/ 璇/ 97Olivia/ 菊香/ 小姐姐/ 牛奶/ 小夏目/ 周依宁/ 万/ 阿/ 咸一/ 蓑/ 烟雨任/ 平生/ 来/ 都/ 来/ 了/ 就/ 像/ 周一/ Mc/ 蛋蛋/ 秉剑侯/ 李大梦/ LeeDiss/ 锐雯雨/ 音眞白/ 半仙/ 幺/ 幺/ Natsuki/ 是/ 只/ 蠢/ 兔纸/ 夏/ 冰莹/ guuweihai/ 阿舞/ 肖柚妮/ 墨脱/ 要/ 开芷/ 珞/ 舒西婷/ Childe0Q/ 被/ 压扁/ 的/ 海螺/ snow/  / arc/ 灰灰/ 灰灰/ 灰/ plus/ 小兔子/ 菲/ 呀/ 士多啤梨/ 羊/ 咩/ 咩/ 李小/ 可可/ 谁/ 来/ 拽/ 我/ 的/ 尾巴/ 飞鸽/ 之舞/ 小美/ 樱雪/ 绫/ samazshiyao/ 王漠/ 里/ Slivan/ 喵/ 小虾/ SUSAN/ 苏/ 上官/ 兰颜/ 这个/ 杀手/ 不/ 太冷/ 看朱成碧/ 纷思君/ 情绪/ 我系/ 小忌廉/ 一只/ 兔/ June/ 我/ 就/ 想/ 改名/ 而已/ 温柔/ 的/ 大猫/ Leo/ 猫/ 芙琳/ 以太/ 博丽/ 魔理沙/ 洛丽塔/ 羽小团/ 娄良/ Rosi/ 叶/ 以北/ 吃不胖/ 的/ 小猫/ Linaingriditttttx/ 胡杨/ 孙阿童/ 林美珍/ 赫蘿/ Taiga/ 宫曼曼/ YoonyiccZW711/ 笙箫/ KIKI/ ./ Liu/ 另一只/ 袜子/ 荒野/ 大/ 嫖客/ 少女/ 诗/ 芸豆/ 豆豆/ 豆璐璐噜/ 棹/ 歌梦里/ 有/ 只/ 独角兽/ Oo/ 澄子/ oO/ 雷梅/ 苔丝/ CherryZhao/ 李萬/ 一琴脂/ 鹿斑/ 比/ Chris/ 姬/ -/ 云烟/ hyoram/ 蔗蔗蔗/ 柚子/ RubySheena/ 孟德尔/ kaka/ 小/ 师妹/ 桢视/ 明大/ 豆苗/ 少女/ 开膛手/ 陈诗/ 茗

下一步绘制图云,用jupyter遇到了很多坑。。

# -*- coding: utf-8 -*-
import matplotlib.pyplot as plt
from wordcloud import WordCloud,STOPWORDS,ImageColorGenerator

# 直接从文件读取数据

text = '''阿蕾/杨/面陈/10/杨/顺顺/霧/橤/真/顺顺/真/谢椿明/刀刀/水枪/大帝/倾浅/Listening/小/火龙/包子/琛/杨笋/笋/蜉蝣/十元/靡靡之音/Real/机智/张/陈梓/小/童鞋/花甲/窗里/窗外/刘梓乔/璇/璇/97Olivia/菊香/小姐姐/牛奶/小夏目/周依宁/万/阿/咸一/蓑/烟雨任/平生/来/都/来/了/就/像/周一/Mc/蛋蛋/秉剑侯/李大梦/LeeDiss/锐雯雨/音眞白/半仙/幺/幺/Natsuki/是/只/蠢/兔纸/夏/冰莹/guuweihai/阿舞/肖柚妮/墨脱/要/开芷/珞/舒西婷/Childe0Q/被/压扁/的/海螺/snow/ /arc/灰灰/灰灰/灰/plus/小兔子/菲/呀/士多啤梨/羊/咩/咩/李小/可可/谁/来/拽/我/的/尾巴/飞鸽/之舞/小美/樱雪/绫/samazshiyao/王漠/里/Slivan/喵/小虾/SUSAN/苏/上官/兰颜/这个/杀手/不/太冷/看朱成碧/纷思君/情绪/我系/小忌廉/一只/兔/June/我/就/想/改名/而已/温柔/的/大猫/Leo/猫/芙琳/以太/博丽/魔理沙/洛丽塔/羽小团/娄良/Rosi/叶/以北/吃不胖/的/小猫/Linaingriditttttx/胡杨/孙阿童/林美珍/赫蘿/Taiga/宫曼曼/YoonyiccZW711/笙箫/KIKI/./Liu/另一只/袜子/荒野/大/嫖客/少女/诗/芸豆/豆豆/豆璐璐噜/棹/歌梦里/有/只/独角兽/Oo/澄子/oO/雷梅/苔丝/CherryZhao/李萬/一琴脂/鹿斑/比/Chris/姬/-/云烟/hyoram/蔗蔗蔗/柚子/RubySheena/孟德尔/kaka/小/师妹/桢视/明大/豆苗/少女/开膛手/陈诗/茗'''

backgroud_Image = plt.imread('girl.jpg')
wc = WordCloud( background_color = 'white',    # 设置背景颜色
                mask = backgroud_Image,        # 设置背景图片
                max_words = 2000,            # 设置最大现实的字数
                stopwords = STOPWORDS,        # 设置停用词
                font_path = 'C:/Users/Windows/fonts/msyh.ttf',# 设置字体格式,如不设置显示不了中文
                max_font_size = 300,            # 设置字体最大值
                random_state = 50,            # 设置有多少种随机生成状态,即有多少种配色方案
                )
wc.generate(text)
image_colors = ImageColorGenerator(backgroud_Image)
#wc.recolor(color_func = image_colors)
plt.imshow(wc)
plt.axis('off')
plt.show()

 

澳门威尼斯人平台 5

 
0    陈诗茗    https://www.zhihu.com/people/chen-shi-ming-69
1    李大梦Lee    https://www.zhihu.com/people/li-da-meng-58-44
2    snow arc    https://www.zhihu.com/people/xiaoxueli
3    夏冰莹    https://www.zhihu.com/people/xia-bingying
4    Sheena    https://www.zhihu.com/people/zhang-chu-yun-84
5    喵小虾    https://www.zhihu.com/people/maoxiaoxia233
6    李大梦Lee    https://www.zhihu.com/people/li-da-meng-58-44
7    李大梦Lee    https://www.zhihu.com/people/li-da-meng-58-44
8    以太    https://www.zhihu.com/people/elapse08
9    zshiyao    https://www.zhihu.com/people/duo-rou-wan-zi-89
10    SUSAN苏    https://www.zhihu.com/people/susansu-66

 

学习过程中遇到什么问题或者想获取学习资源的话,欢迎加入学习交流群
626062078,我们一起学Python!

闲来无事上知乎,看到好多妹子,于是抓取一波。 有没有兴趣?? 目标网址...

然后才能做第二步的数据请求(下方的截图对应网页上的不同区域的请求报文头和返回数据)

  • 服务器响应超时
  • 验证码输入
Python爬虫爬取各大网站新闻(一)

http://blog.csdn.net/jie310300215/article/details/50990167

澳门威尼斯人平台 6

澳门威尼斯人平台 7

python爬取动态网页

http://www.jianshu.com/p/cbcdd5734379?from=timeline

                                                                       图一.查询记录请求报文头

image.png

Python爬虫实例爬取网站搞笑段子

http://www.jb51.net/article/127799.htm

澳门威尼斯人平台 8

不只一次的在第17页,需要输入验证码

Python爬虫—简书首页数据抓取

http://www.jianshu.com/p/9afef50a8cc7

                                                                        图二. 对应不同年份的记录条数返回结果

澳门威尼斯人平台 9

Python 爬取简书标题内容的源码

澳门威尼斯人平台,http://www.jianshu.com/p/33137040f616

至于为什么要分成两步,每一个区域对应一个不同的请求,这些都是网站本身的设计,我也没做过web开发,这么做有哪些优点我确实不清楚/擦汗,我的重点就是模拟它在网页上的请求,实现批量化的数据获取。

image.png

含视频教程用python批量抓取简书用户信息

https://zhuanlan.zhihu.com/p/25855179

 

处理方法:重新更换User-Agent后,直接从第17页开始爬取

Python3.7 爬虫(三)使用 Urllib2 与 BeautifulSoup4 爬取网易云音乐歌单

http://blog.csdn.net/qq_21265915/article/details/69909861

本文由澳门威尼斯人平台发布于计算机编程,转载请注明出处:Python爬知乎妹子都爱取啥名,python爬知妹子

关键词: