美文网首页
网页爬取文本内容实现翻页等代码的优化

网页爬取文本内容实现翻页等代码的优化

作者: 兴化吴奇隆 | 来源:发表于2019-05-23 15:22 被阅读0次

话不多说,先上代码,接下来再一句一句解释:

import requests
import time
from lxml import etree
def getpage(url):
    r=requests.get(url,headers=headers)
    html=etree.HTML(r.text)
    name=html.xpath('//div[@class="title"]//a/text()')
    zhuyan=html.xpath('//div[@class="subtitle text-muted text-overflow hidden-xs"]/a[1]/text()')
    for name1,zhuyan1 in zip(name,zhuyan):#这是我刚掌握的zip函数的作用,就是把两个序列一一对应,如下面print
        with open('C:/Users/Administrator/Desktop/新建文本文档.txt', 'a', encoding="utf-8") as f:
            print(name1+" 主演是 "+zhuyan1)#a是插入,w是读取
            f.write(name1+"\n")
if __name__=="__main__":
    urls=["http://www.bdtvs.com/search.php?page={}&searchtype=5&tid=2&area=%E5%A4%A7%E9%99%86".format(str(i)) for i in range(1,282)]#这一句语言很简介的实现翻页,解决的很麻烦的事情,对其中更改的野马进行遍历
    headers={'User-Agent':'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.157 Safari/537.36'}#大家一定要注意的是headers后面的UA的冒号和减去一个空格,否则会报错
    for url in urls:
        getpage(url)
        time.sleep(0.5)

今天这个代码让我在对爬虫代码有了较为清晰的理解,作为一名自学者,每一步很是艰辛,能对着屏幕想半天,这个优化主要有两点,1、zip函数进行一一对应,更方便输出2、对网址进行格式化{},format(),用for进行遍历,使用range。
其他代码都很简单,希望能共同学习。
下面贴几个,我学习初期的一些代码,应该是思路不一样。

import requests
from lxml import html
import sys
for pageNum in range(327):
    url = 'https://movie.douban.com/review/9936402/?start={}'.format(pageNum*327)
    page=requests.Session().get(url)
    tree=html.fromstring(page.content)#不是utf-8,如何转码,把(page.text)改为(page.content.decode('gbk'))
    result=tree.xpath('//div[@class="content report-comment"]//div[@class="header"]/a/text()') #需要获取的数据
    result2=tree.xpath('//div[@class="content report-comment"]//p[@class="comment-text"]/text()')
    n = 0
    for n in range(len(result)):**#这个思路我挺佩服自己的,能想到使用切片,做到同一,而且当时不太会函数**
        jieguo = "用户@" + result[n] + "@发表:" + result2[n]
        print(jieguo)

再之前的一个语句,没有学会翻页的时候:

import requests
from lxml import html #当时学的是tree,后来还是etree更好
url='https://movie.douban.com/review/9936402/?start=0' #需要爬的网址
page=requests.Session().get(url)
tree=html.fromstring(page.content)#不是utf-8,如何转码,把(page.text)改为(page.content.decode('gbk'))
result=tree.xpath('//div[@class="content report-comment"]//div[@class="header"]/a/text()') #需要获取的数据
result2=tree.xpath('//div[@class="content report-comment"]//p[@class="comment-text"]/text()')
n = 0
i=result[n]
h=result2[n]#这两个变量,设置了但没有用,当时也是蠢得可以
for n in range(len(result)):
    print("用户@"+result[n]+"@发表:"+result2[n])

相关文章

网友评论

      本文标题:网页爬取文本内容实现翻页等代码的优化

      本文链接:https://www.haomeiwen.com/subject/gmtbzqtx.html