XPathとxlwingsは有名な本Top250の直面する問題と解決策をクロール

A. XPathは抽出データにページを解析しました

  1. いくつかの本は、「人類の簡単な歴史:動物からの神に」とサブタイトルされ、メインタイトルとコロンの後のテキストはなく、同じのxpathに、追加の抽出を必要とします。そして、いくつかのタイトルを字幕なし、字幕を抽出するXPathにも使用されている場合は、使用トライので...除いて...に対処するために、間違って行くだろう。
        name = p.xpath('./tr/td[2]/div[1]/a/text()')[0].strip()
        name = name.replace('\n', '').replace(' ', '')
        try:
            add = p.xpath('./tr/td[2]/div[1]/a/span/text()')[0].replace(' ', '')
            name = name + add
        except:
            pass

二つ。Xlwings格納されたデータ

  1. 使用してxlwingsをファイルに保存XLSXときは、開いたときにExcelが開いて、あなたが目に見える= Falseに設定することができます見たくありません。
app = xlwings.App(visible= False,add_book=False)
  1. 場合はwb = xlwings.Book()、オープンのxlsxファイル、そして最後に()メソッドを終了していない、ちょうど)(wb.close。
    アプリを使用する場合は、最後にapp.quit()。
app = xw.App(visible= False,add_book=False)
wb = app.books.add()
'''
wb.save('file.xlsx')
wb.close()
app.quit()
  1. (それは、既存のファイルの場合)xlwings save()メソッドがオーバーライドされます。

III。完全なコード

import requests
from lxml import etree
import xlwings as xw
import time
headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.130 Safari/537.36',
    'Host': 'book.douban.com'
}
books = []
for i in range (0,10):
    link = 'https://book.douban.com/top250?start=' +str(i*25)
    res = requests.get(link, headers=headers, timeout=20)
    print(str(i+1),'页响应状态码:',res.status_code)
    html = etree.HTML(res.text)
    paths = html.xpath('//*[@id="content"]/div/div[1]/div/table')
    for p in paths:
        name = p.xpath('./tr/td[2]/div[1]/a/text()')[0].strip()
        name = name.replace('\n', '').replace(' ', '')
        try:
            add = p.xpath('./tr/td[2]/div[1]/a/span/text()')[0]
            name = name + add
        except:
            pass
        info = p.xpath('./tr/td[2]/p[1]/text()')[0]
        rating = p.xpath('./tr/td[2]/div[2]/span[2]/text()')[0]
        rating_people = p.xpath('./tr/td[2]/div[2]/span[3]/text()')[0].strip()
        rating_people = rating_people.replace('(', '').replace(')', '').replace('\n', '').replace(' ', '').replace('人评价', '')
        quote = p.xpath('./tr/td[2]/p[2]/span/text()')[0]
        book_link = p.xpath('./tr/td[2]/div[1]/a/@href')[0]
        books.append([name,info,rating,rating_people,quote,book_link])
    time.sleep(2)

print('Writing into file...')
app = xw.App(visible= False,add_book=False)
wb = app.books.add()
sht0 = wb.sheets[0]
sht0.range('A1').value = ['书名','作者/出版社/出版时间/定价','评分','评价人数','评语','网址']
sht0.range('A2').value = books
wb.save('books_by_xpath.xlsx')
wb.close()
app.quit()
print('Finish!')
元の記事を公開 ウォンの賞賛0 ビュー9

おすすめ

転載: blog.csdn.net/The_Reflash/article/details/104449844