爬虫秘籍第二式

主要内容

poython爬虫第二式以及“跨界”爬
Lxml爬虫和Xpath语法:
首先是Lxml库的使用
from Lxml import etree
res = requests.get(url)
html = etree.HTML(res.text)
Xpath语法中:@ 是选取属性的意思
首先以酷狗音乐网站为例:先以简单的代码来体会一下 “真好!”

from lxml import etree
import requests
import csv

url = 'http://www.kugou.com/yy/rank/home/1-8888.html?from=rank&qq-pf-to=pcqq.group'

headers = {
    'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36'
}
def get_info(url):
    res = requests.get(url,headers=headers)
    html = etree.HTML(res.text)
    infos = html.xpath('//div[@class="pc_temp_songlist "]/ul/li')
    for info in infos:
        rank_1 = info.xpath('span[3]')[0]
        rank = rank_1.xpath('string(.)').strip()
        song_singer = info.xpath('a/text()')[0]
        time = info.xpath('span[4]/span/text()')[0].strip()
        print(rank,song_singer,time)
        writer.writerow([rank,song_singer,time])
if __name__ == '__main__':
    fp = open('C:/Users/lenovo/Desktop/新建文件夹 (2)/python代码/kugou.csv', 'w', encoding='utf-8', newline='')
    writer = csv.writer(fp)
    writer.writerow(['rank','song_singer',' time'])
    urls = ['http://www.kugou.com/yy/rank/home/{}-8888.html?from=rank'.format(str(i)) for i in range(1, 24)]
    for url in urls:
        get_info(url)

url=http://www.kugou.com/yy/rank/home/1-8888.html?from=rank&qq-pf-to=pcqq.group是目标网页。
headers的获取就以百度的首页为例:http://www.baidu.com/打开网页,按下F12键,点击上方标签中的Network,之后找到与我相似的代码。下图仅供参考!!!

image.png

其中一个小难点就是这段代码的获取:
image.png

当你右键检查网页的代码时,检索代码时,出现下图所示的情况时,右边此时的代码就是我们需要的代码,将其粘贴复制下来,按照图片的方式写下来:
image.png

选中酷狗网页中你想要的信息右键检查,会出现很多代码,右键copy-copyXpath,粘贴在pycharm中如下图所示('***')中的东西,就是我们需要的。:

image.png

这就是第二种爬取网站信息的方法。
说的可能简单了,我还是多练练吧!!!
下面是跨网页爬取信息 :
网页基本都是这样:点一下里面的文字;数字;图片都会跳转至其他页面,我们同样需要跳转的网页的信息,为了让这些信息连接起来,下面的代码就是为了实现此功能:
本部分以猫眼电影网址为例:(http://maoyan.com/board

from lxml import etree
import requests
import csv

headers = {
    'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36'
}

def get_url(url):
    res = requests .get(url,headers = headers )
    html = etree.HTML(res.text)
    infos = html.xpath('//dl[@class ="board-wrapper"]/dd')
    for info in infos:
        name = info.xpath('div/div/div[1]/p[1]/a/text()')[0]
        info_url = 'http://maoyan.com' + info.xpath('div/div/div[1]/p[1]/a/@href')[0]
        star = info.xpath('div/div/div[1]/p[2]/text()')[0].strip()
        release_time = info.xpath('div/div/div[1]/p[3]/text()')[0]
        score_1 = info.xpath('div/div/div[2]/p/i[1]/text()')[0]
        score_2 = info.xpath('div/div/div[2]/p/i[2]/text()')[0]
        score = score_1 + score_2
        get_info(info_url,name,star,release_time,score)

def get_info(url,name,star,time,score):
    res = requests.get(url, headers=headers)
    html = etree.HTML(res.text)
    style = html.xpath('/html/body/div[3]/div/div[2]/div[1]/ul/li[1]/text()')[0]
    long_time = html.xpath('/html/body/div[3]/div/div[2]/div[1]/ul/li[2]/text()')[0].split('/')[1].strip()
    print(name, star, time, score, style, long_time)
    writer.writerow([name, star, time, score, style, long_time])

fp = open('C:/Users/lenovo/Desktop/新建文件夹 (2)/python代码/猫眼跨网页爬取信息.csv','w',encoding= 'utf-8',newline='')
writer = csv.writer(fp)
writer.writerow(['name','star','time','score','style','long_time'])
url = 'http://maoyan.com/board'
get_url(url)

大部分步骤都是一样的,其中跳转的网页,其网址如果我们能获取,那么就方便了。
下个网站的获取如下图,首先是本网页网址+下图中红圈里面的黄色圈中的部分,(黄色圈里面的内容同上面检索的一样,Xpath获取)。
例如: 'http://maoyan.com' + info.xpath('div/div/div[1]/p[1]/a/@href')[0]

image.png

网址都出来,还不简单吗?接下来再好好看看代码。动手敲一遍。
今天学的真的很多!!!明天再好好练一遍!!!
哎呀呀!好累!感觉会的好少啊!!!不过起码对这个很感兴趣,想想这些功能就觉着好NB!!!
认真看,认真学 ————真好!!!
image

吐槽
今天才周二,距离休息还有......呃......不算了,脑子不想转了!!!
庆幸的是在如此期待休息的日子中,学习了一些新的东西,起码不像以前那样“梦游”了!

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 222,590评论 6 517
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 95,157评论 3 399
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 169,301评论 0 362
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 60,078评论 1 300
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 69,082评论 6 398
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 52,682评论 1 312
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 41,155评论 3 422
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 40,098评论 0 277
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 46,638评论 1 319
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,701评论 3 342
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,852评论 1 353
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 36,520评论 5 351
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 42,181评论 3 335
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,674评论 0 25
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,788评论 1 274
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 49,279评论 3 379
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,851评论 2 361

推荐阅读更多精彩内容