Scan.co.uk 판매 스크래퍼
HTTP 오류 403: 금지됨
이것은 urllib 헤더와 관련이 있습니다. 웹 사이트는 수많은 스크래퍼의 요청을 처리하는 데 랩핑되기를 원하지 않으므로 urllib로 향하는 요청이 차단됩니다.
이 문제를 해결하려면 스크래핑 봇을 실행하고 있다는 사실을 모호하게 해야 합니다. 이를 수행하는 가장 간단한 방법은 다음과 같이 헤더를 사용하는 것입니다.
req = Request(my_url, headers={'User-Agent': 'Mozilla/5.0'})
page = urlopen(req)
page_html = page.read()
page.close()
처음에는 이것이 작동하지 않았습니까?
따라서 다음은 Zeta 사용자StackOverflow의 또 다른 분명히 오래된 솔루션입니다.
import urllib.request
class AppURLopener(urllib.request.FancyURLopener):
version = "Mozilla/5.0"
uClient_opener = AppURLopener()
uClient = uClient_opener.open(my_url)
이것은 레거시 솔루션으로 보이며 선호되지 않습니다. 결국 두 솔루션 모두 오타를 제외하고 저에게 효과적이었습니다.
x.findAll()은 모든 결과를 반환하지 않습니다.
product_list = product_categories[x].findAll('li')
위의 코드는 6개의 결과를 반환했어야 했지만 4를 넘을 수 없었습니다.
일부 인터넷 검색에서는 이것이 html_parser의 문제라고 제안했습니다. 제안된 솔루션 - html5lib를 사용하십시오.
이것은 BeautifulSoup으로 html을 파싱하는 모습입니다.
page_soup = soup(page_html, 'html_parser')
product_categories = page_soup.findAll('div', {'class':'category'})
코드 변경은 최소화됩니다. html_parser 변수를 html5lib로 바꾸면 됩니다.
import html5lib
page_soup = soup(page_html, 'html5lib')
product_categories = page_soup.findAll('div', {'class':'category'})
그리고 그것은 작동합니다!
User-Agent
내가 찾고 있던 올바른 6을 반환합니다.누군가가 도움이되기를 바랍니다.
Reference
이 문제에 관하여(Scan.co.uk 판매 스크래퍼), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/bmraubo/scan-co-uk-sales-scraper-39nl텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)