如何从一个网站的多个链接中抓取纯文本?

时间:2018-10-07 23:45:07

标签: python json web-scraping beautifulsoup

from bs4 import BeautifulSoup
import bs4 as bs
import pandas as pd
import numpy as py
import json
import csv
import re
import urllib.request
sauce = 
urllib.request.urlopen("https://www.imdb.com/list/ls003073623/").read()
soup = bs.BeautifulSoup(sauce, 'html.parser')
soup.findAll('a', href=re.compile('^/title/'))

我正在尝试从一个网站上刮掉多个链接(大约500个),并且我不想手动输入每个URL,我该如何抓取呢?

1 个答案:

答案 0 :(得分:0)

With BeautifulSoup

如果我理解正确,您正在尝试获取包含给定网站上所有链接的一部分的列表。在BeautifulSoup的文档中有一个example,可以确切说明该操作:

from BeautifulSoup import BeautifulSoup
import urllib2
import re

html_page = urllib2.urlopen("https://www.imdb.com/list/ls003073623/")
soup = BeautifulSoup(html_page)
ids = []

for link in soup.findAll('a', attrs={'href': re.compile("^http://")}):
    ids.append(link.get('href').split("/")[4])

print(ids)

使用硒

作为参考,由于问题似乎并不仅仅局限于BeautifulSoup,因此,这就是我们如何使用Selenium(一种非常受欢迎的替代品)来做同样的事情。

from selenium import webdriver

driver = webdriver.Chrome()
driver.get("https://www.imdb.com/list/ls003073623/")

ids = []
elems = driver.find_elements_by_xpath("//a[@href]")

for elem in elems:
    ids.append(elem.get_attribute("href").split("/")[4])

print(ids)