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,我该如何抓取呢?
答案 0 :(得分:0)
如果我理解正确,您正在尝试获取包含给定网站上所有链接的一部分的列表。在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)